Вниз
Скачать: CL | DM;

Как правильно блокировать/разблокировать поток?   Найти похожие ветки 

 
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 вся ветка

Скачать: CL | DM;



Память: 0.52 MB
Время: 0.019 c
2-1194416145
XIO
2007-11-07 09:15
2007.12.02
Delphi .Net и XML


8-1170431716
Jimmy
2007-02-02 18:55
2007.12.02
Не работает пунктир для толстых линий.


2-1194428773
temp77
2007-11-07 12:46
2007.12.02
Как мне правильно сформировать ConnectionString


15-1193379486
bva
2007-10-26 10:18
2007.12.02
Создание инсталяции программы


15-1194086061
Prohodil Mimo
2007-11-03 13:34
2007.12.02
Существуют ли способы записи на CD после финализации?




   Наверх