Вверх ↑
Этот топик читают: Гость
Ответов: 655
Рейтинг: 18
#1: 2017-02-10 14:49:15 ЛС | профиль | цитата
Добрый день.
Понадобилось передавать данные в потоке с использованием критических секций, решил модифицировать компонент для себя, прошу подсказать можно ли так делать:

procedure ThiSafeMode.Global;
var
MS: Cardinal;
begin
case _prop_WaitMode of
0: begin
FData := ReadData(_Data,_data_Data);
repeat
MS := WaitForSingleObject(Mtx, INFINITE);
until (MS = WAIT_OBJECT_0) OR ((MS = WAIT_ABANDONED_0) AND _prop_Wait_Abandoned);
end;
1: begin
MS := WaitForSingleObject(Mtx, 0);
if (MS ‹› WAIT_OBJECT_0) OR ((MS ‹› WAIT_ABANDONED_0) AND _prop_Wait_Abandoned) then exit;
end;
end;
_hi_onEvent(_event_onSafeMode, FData);
FData := FDefault;
ReleaseMutex(Mtx);
_hi_onEvent(_event_onRelease);
end;

procedure ThiSafeMode.Local;
begin
case _prop_WaitMode of
0: begin
FData := ReadData(_Data,_data_Data);
EnterCriticalSection(PCS^);
end;
1: begin
if not TryEnterCriticalSection(PCS^) then exit;
end;
end;
_hi_onEvent(_event_onSafeMode, FData);
LeaveCriticalSection(PCS^);
FData := FDefault;
_hi_onEvent(_event_onRelease);
end;
карма: 0

0
vip
#1.1контекстная реклама от партнеров
1
Сообщение
...
Прикрепленные файлы
(файлы не залиты)