Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: 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 вся ветка

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

Наверх




Память: 0.54 MB
Время: 0.026 c
2-1194434383
dumka
2007-11-07 14:19
2007.12.02
Поиск


6-1175356270
Tiberius
2007-03-31 19:51
2007.12.02
Как запретить TWebBrowser.GoBack


15-1193636264
boriskb
2007-10-29 08:37
2007.12.02
Сниму 2-х комнатную в Москве.


3-1185611898
pohil
2007-07-28 12:38
2007.12.02
Формат даты


2-1194450966
Kick
2007-11-07 18:56
2007.12.02
UDPClient, UDPServer, TCPClient, TCPServer