我试图在Linux中实现非常简单的Windows事件.仅适用于我的场景 - 3个线程,1个主线程和2个辅助线程.每个辅助线程通过SetEvent引发1个事件,主线程等待它.例:
int main()
{
void* Events[2];
Events[0] = CreateEvent();
Events[1] = CreateEvent();
pthread_start(Thread, Events[0]);
pthread_start(Thread, Events[1]);
WaitForMultipleObjects(2, Events, 30000) // 30 seconds timeout
return 0;
}
int* thread(void* Event)
{
// Do something
SetEvent(Event);
// Do something
}
Run Code Online (Sandbox Code Playgroud)
因此,为了实现它,我使用条件变量.但我的问题是 - 这是正确的方法吗?或者我做错了什么?我的实施:
// Actually, this function return pointer to struct with mutex and cond
// here i just simplified example
void* CreateEvent(mutex, condition)
{
pthread_mutex_init(mutex, NULL);
pthread_cond_init(condition, NULL);
}
bool SetEvent (mutex, condition)
{
pthread_mutex_lock(mutex);
pthread_cond_signal(condition);
pthread_mutex_unlock(mutex);
}
int …
Run Code Online (Sandbox Code Playgroud)