海湾合作委员会 4.4.3 c89
我有一个在单独线程中运行的事件循环。
我的设计是这样的,只是示例代码来帮助解释。
我需要以某种方式等待初始化完成,然后才能调用 get_device_params。
我确实在调用 get_device_params 之前让 usleep 持续了 3 秒,但我真的不想阻止。
非常感谢您的任何建议,
void* process_events(void *data)
{
switch(event_type)
{
case EVT_INITIALIZED:
/* Device is now initialized */
break;
}
}
int main(void)
{
/* Create and start thread and process incoming events */
process_events();
/* Initialize device */
initialize_device();
/* Get device parameters */
/* However, I cannot run this code until initialization is complete */
get_device_params();
return 0;
}
最佳答案
如果这个单独的线程是 POSIX 线程(即您在典型的 UNIX 平台上),那么您可以使用 pthread 条件变量。
你调用pthread_cond_wait()
在等待线程中。当 init 线程完成它的工作时,你调用 pthread_cond_signal()
.在我看来,这是在另一个线程中等待初始化的规范方式。
关于c - 等待事件结束时该做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3725891/