Главная страница
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.031 c
2-1135430678
Juk
2005-12-24 16:24
2006.01.15
Кривые


3-1132653851
G707
2005-11-22 13:04
2006.01.15
Не присваиваются значения, Вот фрагмент:


14-1134920396
begin...end
2005-12-18 18:39
2006.01.15
С Днём рождения! 18 декабря


2-1135497257
Kot_
2005-12-25 10:54
2006.01.15
Вставка авто суммы в MS Word


2-1135690645
Proxytel
2005-12-27 16:37
2006.01.15
Эмуляция мыши