Estoy tratando de portar algún código de Windows a Linux, idealmente a través de librerías independientes de plataforma (por ejemplo, aumentar), sin embargo, no estoy seguro de cómo portar este código de evento.Equivalente multiplataforma a eventos de Windows
El bit de código implica dos hilos (vamos a llamarlos A y B). A quiere hacer algo que solo B puede, por lo que envía un mensaje a B, luego espera que B lo haga. En las ventanas se ve algo como esto:
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);
}
Miré a la biblioteca de impulso :: hilo, pero que aún no ha parecen tener nada que hace esto, se cierra el que podía ver era el impulso :: condition_variable, pero parece eso significa en conjunción con un mutex, que no es el caso aquí.
Creo que su código específico de Windows está utilizando un mutex debajo del capó. Simplemente abstrae eso. – rmeador
posible duplicado de [pthread-windows windows manual-reset event] (http://stackoverflow.com/questions/178114/pthread-like-windows-manual-reset-event) – jww
[esta pregunta] (http: // stackoverflow .com/questions/4692717/win32-reset-event-like-synchronization-class-with-boost-c) también tiene buena información – Loomchild