Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.15;
Скачать: CL | DM;

Вниз

TThread и повторный вызов   Найти похожие ветки 

 
Alec_C   (2005-12-13 09:10) [0]

Я работаю с телнетом. Когда появляются данные, я создаю TThread, который их обрабатывает. Однако если данных много, их обработка может занимать много времени, при этом могут поступить уже новые данные до того момента, как перед этим созданный TThread обработает предыдущие полученные данные и завершится. Чтобы избежать одновременно начала работы следующей созданной нити до того момента, как закончится предыдущая, я делаю так:
в ф-ции работы нити -
// Ждем пока предыдущая нить завершиться
While TelnetForm.Tag = 10 do
    Application.ProcessMessages;
// Ставим флаг, что нить работает
TelnetForm.Tag := 10;
// Обработка данных
........
// Убираем флаг работы нити
TelnetForm.Tag := 0;
Правильно ли это?


 
MBo ©   (2005-12-13 09:15) [1]

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


 
TUser ©   (2005-12-13 10:05) [2]

Если обслуживаешь много клиентов, то для каждого отдельный поток - это понятно. А зачем тормозить работу до завершения предыдущего задания? Если каждому свой поток, то обычно они работают параллельно.

> Правильно ли это?

Нет, не правильно. Надо ждать завершения работы поток в WaitForSingleObject, или проще - прописаться в OnTerminate того потока, завершения которого мы ждем.



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

Текущий архив: 2006.01.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.046 c
14-1135262887
BFG9k
2005-12-22 17:48
2006.01.15
Обьясните механизм извлечения dcu файла из пакета


2-1135600916
dera
2005-12-26 15:41
2006.01.15
Зашел в тупик.


1-1134329319
SergP
2005-12-11 22:28
2006.01.15
Корректное вынужденное терминирование потока.


14-1134921013
Nic
2005-12-18 18:50
2006.01.15
Какие ассоциации у Вас...


4-1131416118
msgipss
2005-11-08 05:15
2006.01.15
Можно ли получить время нахождения процесса в памяти