Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
ВнизКак правильно блокировать/разблокировать поток? Найти похожие ветки
← →
DevilDevil © (2007-11-08 15:01) [40]> Slym © (08.11.07 06:16) [38]
спасибо, что-то ступил, даже хелп не помотрел.
> Сергей М. © (08.11.07 10:25) [39]
тоже спасибо.
← →
Loginov Dmitry © (2007-11-08 20:49) [41]> и ещё вопрос: процедуры Lock() и UnLock() могут вызываться
> из обоих потоков; процедуры надо защищать критической секцией
> ?
Тело процедуры ты можещь защитить критической секцией (так наверно и нужно делать). Но в самих процедурах для блокировки / разблакировки потоков использовать мьютексы и критические секции нельзя, т.к. в этом случае пара Lock() / UnLock() всегда должна вызываться в одном и том же потоке. Так что здесь следует использовать Event.
← →
Leonid Troyanovsky © (2007-11-08 21:32) [42]
> Loginov Dmitry © (08.11.07 20:49) [41]
> Тело процедуры ты можещь защитить критической секцией (так
> наверно и нужно делать). Но в самих процедурах для блокировки
> / разблакировки потоков использовать мьютексы и критические
> секции нельзя, т.к. в этом случае пара Lock() / UnLock()
> всегда должна вызываться в одном и том же потоке. Так что
> здесь следует использовать Event.
А хватит Event"а, если тело большое?
--
Regards, LVT.
← →
DevilDevil (2007-11-08 23:12) [43]недопонял... вот так правильно или нет :
procedure TMusicPlayerThread.Lock();
begin
try
FPlayer.BeginCriticalSection();
Event.ResetEvent();
finally
FPlayer.EndCriticalSection();
end;
end;
procedure TMusicPlayerThread.UnLock();
begin
try
FPlayer.BeginCriticalSection();
Event.SetEvent();
finally
FPlayer.EndCriticalSection();
end;
end;
← →
Loginov Dmitry © (2007-11-08 23:18) [44]Функции Lock и UnLock в данном случае - простые и защищать критической секцией здесь нечего.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.051 c