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

Вниз

Управление потоками   Найти похожие ветки 

 
Alibaba ©   (2004-10-15 04:53) [0]

Господа, такая ситуация:

Есть главный поток
TThMaster = class(TThread)
...
end;
thMaster: TThMaster;

Есть N дополнительных потоков
TThDepend = class(TThread)
...
end;
thDepend: array[0..N] of TThDepend;

Есть список задач
TTask = class
...
end;
ListTask: TList

Список задач время от времени пополняется
ListTask.Add(TTask.Create(...))
и запускается главный поток
thMaster.Resume

Главный поток проверяет если есть нерешенные задачи в очереди и свободный дополнительный поток (СДП), то передаем СДП задачу, и запускаем СДП (thDepend.Resume).
И так до тех пор пока не останется нерешенных задач или все потоки заняты.
После этого главный поток засыпает (Suspend)

Если СДП завершил работу, то он должен разбудить главный поток (thMaster.Resume). Главный поток раздает задачи (см. предыдущий абзац)

Главный поток могут будить два события:
- появилась новая задача
- какой-либо из дополнительных потоков завершил работу

В чем проблема?
Бывает такая ситуация, что главный поток занимается раздачей заданий и в это время один из дополнительных потоков сообщает ему что он все посчитал (thMaster.Resume) - происходит ошибка.

Как сделать, что-бы если главный поток работает, а дополнительный хочет ему что-то сказать, то что-бы дополнительный подождал?


 
Ozone ©   (2004-10-15 07:35) [1]

WaitForSingleObject?



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

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

Наверх




Память: 0.47 MB
Время: 0.052 c
14-1100380966
miwa
2004-11-14 00:22
2004.11.28
A EmbeddedWB есть для Delphi7?


14-1100105032
Soft
2004-11-10 19:43
2004.11.28
Путинский режим = ставка Гитлера.


1-1100557637
uses-mind.dll
2004-11-16 01:27
2004.11.28
чем отличается ССЫЛКА от УКАЗАТЕЛЯ ? подробнее ...


1-1100175582
Zilog
2004-11-11 15:19
2004.11.28
устройство возвращает через com порт данные. Как хранить?


14-1099945909
Cerberus
2004-11-08 23:31
2004.11.28
Хостинг