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

Вниз

Каким образом правильно синхронизировать функцию потока?   Найти похожие ветки 

 
dimonf ©   (2003-06-20 11:49) [0]

Я создаю свой компанент TComponent.
При Create компонента создаю поток методом:
FThread := CreateThread(nil,0,@MonitorThread,FParamPtr,0,FThreadBaseId);
И описываю саму функцию потока: function MonitorThread(Prm : Pointer) : DWORD; stdcall;
begin
end;
Как правильно мне сослаться на процедуры моего TComponentа из функции потока??? Я знаю что для THread есть функция Synchronize(Self.DoSomething), а какая функция синхронизации есть для API???


 
Polevi ©   (2003-06-20 14:01) [1]

в твоем компоненте должен быть цикл ожидания уведомлений из потока
проще всего создать в нем окно и из потока посылать сообщения этому окну (SendMessage) - в данном случае цикл реализовывать не нужно, он уже есть
протокол придумай сам, например в lParam например номер ф-ии, в wParam - указатель на данные

можно без окна, через MsgWaitForMultipleObjects, в данном случае поток в какой либо структуре указывает номер ф-ии и данные и взводит объект синхронизации, который ожидает ф-ия в основном потоке
для защиты структруы используй критические секции

PS
можно передавать не номер ф-ии а ее адрес, в таком случае удобно использовать TMethod


 
Digitman ©   (2003-06-20 15:01) [2]


> dimonf


объясни, какой ощутимый выигрыш ты получаешь, фактически используя стандартную библиотеку классов и отказываясь при этом от класса TThread в пользу прямого WinAPI-вызова в части работы с тредом ?



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

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

Наверх




Память: 0.47 MB
Время: 0.021 c
3-68185
Tahion2
2003-07-28 20:38
2003.08.21
Позволяет ли ClientDataSet хранить несколько таблиц в одном файле


3-68153
Grac
2003-07-25 15:56
2003.08.21
QReport - Номер страницы


3-68171
Aleksandr
2003-07-28 12:51
2003.08.21
Почему не отключается DataSet.Controls?


14-68475
vopros
2003-08-06 10:09
2003.08.21
Приехал из отпуска. Настроение на 0.


3-68225
Алексей
2003-07-25 15:38
2003.08.21
Как получить список уникальных значений поля БД ?