Вниз
Скачать: CL | DM;

И снова потоки...   Найти похожие ветки 

 
skywalker ©   (2002-03-06 17:48) [0]

Еще один вопрос...
Никто не встречался с проблемой подвисания потока, через какие-то
(скорее всего одинаковые) промежутки времени? При этом внешних причин нет никаких. В потоке я использую блокирующий сокет, созданный через API, и управляемый тоже через API. Может причина в нем? Зависание происходин не во время работы с сокетом а в произвольное время. Точнее, я заметил закономерность. У меня есть
несколько объектов, которые создаются в рантайме и указатели на них сохраняются в динамическом массиве. И вот каждый раз, когда
я получаю длинну массива или использую переменную, в которой
хранится эта длина, поток подвисает а потом идет дальше. Так же он подвисает, когда я использую recv или accept в операциях с сокетом. Вроде бы все симптомы описал...
Может у кого-нибудь встречалась подобная проблема?

thnx


 
Fellomena   (2002-03-06 18:54) [1]

Может поток обращается к каким-нибудь ресурсам, которые в критической секции распологаются и в момент обращения заняты другими потоками ? Может не крит. секция, а мьютекс или симафор ? Посмотри... А может дело в пресловутой вытесняющей многозадачности ;) Попробуй дельта-приоритет потоку повысь и посмотри что получится .


 
bob5   (2002-03-11 11:02) [2]

У меня было тоже самое в потоке сохраненял измененные записи.
Использовал и критические секции и синхронизацию. Проблема с зависанием была точно такой же только чем чаще обращался к записи тем на дольше подвисал поток. при этом поток чтения работал и работает нормально. Пришлось отказаться от потока на запись.


 
Виктор Щербаков ©   (2002-03-11 11:31) [3]


> каждый раз, когда
> я получаю длинну массива или использую переменную, в которой
> хранится эта длина, поток подвисает а потом идет дальше


Может быть дело в том, что доступ к главной куче процесса осуществляется потоками последовательно?



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.006 c
1-39701
ymin
2002-04-29 16:04
2002.05.13
Showmessage(‘Давление должно быть <’ +inttostr(int2*0.8));


1-39693
Riko
2002-04-29 14:58
2002.05.13
Как применить?


1-39761
KIG_Soft
2002-04-25 07:09
2002.05.13
ShellListView


4-39900
Cobalt
2002-03-07 17:20
2002.05.13
Создание окна


1-39767
ice
2002-04-28 11:46
2002.05.13
Цвета (RGB Hex)




   Наверх