c - 等待事件结束时该做什么

标签 c multithreading events

海湾合作委员会 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/

相关文章:

c++ - 在 Qt 中,如何查询 QMutex 或 QReadWriteLock 的状态?

javascript - jQuery 单击不会持续触发

c - C 中的仿射密码无法正常工作

c - 为什么我收到警告 C4034 : sizeof returns 0?

c - 如果我们在 SMP 上的中断处理程序中休眠会发生什么

c - gcc -fstack-protector 不会抛出错误

java - 排序线程按照创建/启动的顺序运行

java - Ehcache多线程场景

C# - 通过 if 条件检查值的数据类型

javascript - jQuery 自定义事件监听器