Главная страница
    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.01 c
8-1112937769
dimon__
2005-04-08 09:22
2005.08.14
Статическая картинка с web камеры


14-1122357192
Ega23
2005-07-26 09:53
2005.08.14
С днем рождения! 26 июля


1-1122348235
Кот
2005-07-26 07:23
2005.08.14
Как узнать размер файла?


5-1093259795
Jenek
2004-08-23 15:16
2005.08.14
Windows и меню


9-1114359194
Yegorchic
2005-04-24 20:13
2005.08.14
Как сделать 2D вид в GLScene?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский