Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];

Вниз

Умирающий поток.   Найти похожие ветки 

 
debuger ©   (2005-07-15 20:47) [0]

Доброго времени суток
Есть следжующая ситуация: имеется некий общий ресурс, и несколько потоков, которые к нему доступаются(использую критические секции). Но некий не поддающийся прослеживанию(т.е. спонтанно для меня лично) момент времени один из потоков пересает обращаться к ресурсу вообще, т.е. создается впечатление что он термнэйтнулся за моей спиной, причем без каких либо исключений. Может ли такое быть и как это лечить.


 
Mx ©   (2005-07-15 20:53) [1]

Надо бы инфы побольше


 
begin...end ©   (2005-07-15 20:56) [2]

> debuger ©   (15.07.05 20:47)

> один из потоков пересает обращаться к ресурсу вообще,
> т.е. создается впечатление что он термнэйтнулся за
> моей спиной

Действительно ли он завершился? Что возвращает в этой ситуации WaitForSingleObject (с параметром dwMilliseconds = 0)?


 
Alex Konshin ©   (2005-07-15 22:34) [3]

Исключение вполне могло быть, только ты его не отловил в потоке.

Как создавался поток?


 
debuger ©   (2005-07-16 16:33) [4]

2: вроде как завершился, я через WaitFor его дожидаюсь при завершении, сразу же срабатывает, если бы он залип был, то вряд ли бы я его так быстро дождался.
3: поток создавался как TThread.Create

К тому же глюк очень редкий и отследить его практически невозможно, тем более у меня по месту дизайна не глючило ни что, глючит уже у заказчика.


 
debuger ©   (2005-07-17 11:43) [5]

основное тело потока примерно следующее:

repeat
 tickCount := GetTickCount;

 GetDeviceInf; // читаем с девайса инфу, это и есть общий ресурс, внутри самой процедуры и используются критические секции  
 Synchronize(UpDate); //выод результатов

 tickCount := GetTickCount - tickCount;

 if tickCount < idleTime then
   Delay(idleTime - tickCount); // Delay - по сути некое подобие того, что еть в RxLib.
until terminated;


Помжет ли мне то, что содержимое цикла я оберну в try..except?


 
Digitman ©   (2005-07-18 10:22) [6]


> Помжет ли мне то, что содержимое цикла я оберну в try..except?


хуже уж точно не будет
по кр.мере, если искл-е таки возникает, ты сможешь записать инф-цию о нем в протокол для послед.анализа

есть еще предположение, что где-то в телах вызываемых в теле Execute() п/программ ты "гадишь" поле TThread.FTerminated, что вполне может привести к "досрочному" выходу из цикла


 
Alexander Panov ©   (2005-07-18 10:30) [7]

debuger ©   (17.07.05 11:43) [5]
Помжет ли мне то, что содержимое цикла я оберну в try..except?


Поможет несомненно - не будет произвольного выхода из функции потока.
Кроме того, вначале цикла тоже желательно проверять флаг Terminated.


 
debuger ©   (2005-07-22 16:11) [8]

Спасибо всем.


 
debuger ©   (2005-07-22 16:11) [9]

Спасибо всем.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.08.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.012 c
14-1122290680
Копир
2005-07-25 15:24
2005.08.14
Хорошая новость.


3-1120485884
DelphiN!
2005-07-04 18:04
2005.08.14
Востановление "удаленных" записей из таблицы СУБД FB 1.5


14-1121774126
SergP.
2005-07-19 15:55
2005.08.14
Помогите с PHP


6-1112417763
Evgenius
2005-04-02 08:56
2005.08.14
Програмная генерация события в TwebBrowser


14-1121748460
Fin
2005-07-19 08:47
2005.08.14
Всех с днем программиста!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский