Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, morm, Вы писали:
M>>Может кто-нибудь объяснить зачем нужен этот проклятый lock??? Заранее спасибо.
U>с какой целью интересуетесь? U>в публичном интерфейсе, возможно, такого нет (неймспейс detail непубличен)
рискнул использовать, но меня убил этот lock, что они имели ввиду? Какое-то масло масляное
Здравствуйте, morm, Вы писали:
M>рискнул использовать, но меня убил этот lock, что они имели ввиду? Какое-то масло масляное
я бустом не пользуюсь, но могу предположить, что это единый механизм сообщить клиенту о неких платформ-спесифик операциях с элементом синхронизации
Здравствуйте, uzhas, Вы писали:
U>Здравствуйте, morm, Вы писали:
M>>рискнул использовать, но меня убил этот lock, что они имели ввиду? Какое-то масло масляное U>я бустом не пользуюсь, но могу предположить, что это единый механизм сообщить клиенту о неких платформ-спесифик операциях с элементом синхронизации
??? Делать проверку залочен ли внешний мьютекс перед тем как работать со встроенным event'ом?! Что бы это могло быть?
Здравствуйте, morm, Вы писали:
M>Здравствуйте, c-smile, Вы писали:
CS>>Здравствуйте, morm, Вы писали:
M>>>Может кто-нибудь объяснить зачем нужен этот проклятый lock??? Заранее спасибо.
CS>>Это так называемый conditional wait. CS>>https://computing.llnl.gov/tutorials/pthreads/#ConditionVariables
M>Я так понимаю это имитация поведения виндового event'а?!
Ну нет конечно. В pthreads есть готовый примитив pthread_cond_wait() в windows такого нет.
Посмотри ссылку что я дал (там сайт какой-то странный — нужно F5 пару раз нажать чтобы страница отрендерилась).
Ну или google на conditional wait, conditional variables.
Здравствуйте, Sni4ok, Вы писали:
S>Здравствуйте, morm, Вы писали:
M>>Может кто-нибудь объяснить зачем нужен этот проклятый lock??? Заранее спасибо.
S>ну как зачем, есть разделяемая переменная и доступ к ней нужно синхронизировать.
Возможно мой мозг загажен Win32 API?! Я хочу использовать аналог CreateEvent(), SetEvent(), ResetEvent(). Для меня удивительно, что приходится синхронизировать доступ к объекту ядра, который предназначен для синхронизации Собствено я и искал исползоване этих функций в исходниках win_event, а там такой неприятный сюрприз
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, morm, Вы писали:
M>>Здравствуйте, c-smile, Вы писали:
CS>>>Здравствуйте, morm, Вы писали:
M>>>>Может кто-нибудь объяснить зачем нужен этот проклятый lock??? Заранее спасибо.
CS>>>Это так называемый conditional wait. CS>>>https://computing.llnl.gov/tutorials/pthreads/#ConditionVariables
M>>Я так понимаю это имитация поведения виндового event'а?!
CS>Ну нет конечно. В pthreads есть готовый примитив pthread_cond_wait() в windows такого нет. CS>Посмотри ссылку что я дал (там сайт какой-то странный — нужно F5 пару раз нажать чтобы страница отрендерилась). CS>Ну или google на conditional wait, conditional variables.
CS>Например в ocaml : http://caml.inria.fr/pub/docs/old-311/libref/Condition.html
Condition variables to synchronize between threads.
Condition variables are used when one thread wants to wait until another thread has finished doing something: the former thread ``waits'' on the condition variable, the latter thread ``signals'' the condition when it is done. Condition variables should always be protected by a mutex. The typical use is (if D is a shared data structure, m its mutex, and c is a condition variable):
Mutex.lock m;
while (* some predicate P over D is not satisfied *) do
Condition.wait c m
done;
(* Modify D *)
if (* the predicate P over D is now satified *) then Condition.signal c;
Mutex.unlock m