Главная страница
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.028 c
3-1132298547
syte_ser78
2005-11-18 10:22
2006.01.15
доступ к результату запроса


6-1127834744
H@rdDrive
2005-09-27 19:25
2006.01.15
Как постить cookie для аутидентификации?


6-1128493311
C00ler
2005-10-05 10:21
2006.01.15
Отслеживание посещаемых страниц ...


2-1135420209
Pazitron_Brain
2005-12-24 13:30
2006.01.15
Мой вопрос:


2-1135446082
SEN
2005-12-24 20:41
2006.01.15
Значение текстового поля в Word