Я пытаюсь перенести некоторый код Windows в Linux, в идеале через независимые от платформы библиотеки (например, boost), однако я не уверен, как переносить этот бит кода события.
Бит кода включает в себя два потока (позволяет называть их A и B). A хочет сделать то, что может только B, поэтому он отправляет B сообщение, а затем ожидает, что B скажет его. В окнах это выглядит примерно так:
void foo();//thread a calls this
void bar(HANDLE evt);
void foo()
{
HANDLE evt = CreateEvent(0,FALSE,FALSE,0);
bCall(boost::bind(&bar, evt));
WaitForSingleObject(evt,INFINITE);
CloseHandle(evt);
}
void bar(HANDLE evt)
{
doSomething();
SetEvent(evt);
}
Я посмотрел на библиотеку boost:: thread, но у нее, похоже, ничего не было, закрытие, которое я видел, это boost:: condition_variable, но, похоже, это средство в сочетании с мьютексом, которое не здесь.