Sto provando a portare alcuni codici Windows su Linux, idealmente attraverso librerie indipendenti dalla piattaforma (es. Boost), tuttavia non sono sicuro di come trasferire questo bit del codice evento.Cross-Platform equivalente a eventi Windows
Il bit di codice prevede due thread (chiamiamoli A e B). A vuole fare qualcosa che solo B può, quindi invia un messaggio a B, quindi aspetta che B dica che è stato fatto. In Windows Questo sembra qualcosa di simile:
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);
}
ho guardato la biblioteca boost :: thread, ma che non ha ancora sembrano avere tutto ciò che fa questo, si chiude ho potuto vedere è stato il boost :: condition_variable, ma sembra questo è un mezzo in congiunzione con un mutex, che non è il caso qui.
Penso che il codice specifico per Windows stia utilizzando un mutex sotto il cofano. Lo astrae solo via. – rmeador
possibile duplicato di [evento di reimpostazione manuale di windows simile a pthread]] (http://stackoverflow.com/questions/178114/pthread-like-windows-manual-reset-event) – jww
[questa domanda] (http: // stackoverflow .com/questions/4692717/win32-reset-event-like-synchronization-class-with-boost-c) ha anche una bella informazione – Loomchild