首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C(linux平台)中基于事件的通信的最佳机制

C(linux平台)中基于事件的通信的最佳机制
EN

Stack Overflow用户
提问于 2014-12-07 21:15:48
回答 1查看 407关注 0票数 0

我想在这两个线程之间进行通信。只有一个事件会触发其他线程。

我的条件是基于事件的通信应该是有效的。我尝试使用消息队列,但通常mq_send很耗时。

EN

回答 1

Stack Overflow用户

发布于 2014-12-07 22:22:03

我认为最好的方法是使用Pthread_mutex和pthread_cond

您应该等待事件,如下所示:

代码语言:javascript
运行
复制
    pthread_mutex_t lock;
    pthread_cond_t cond;



    pthread_mutex_lock(&>lock);
    /* releasing the mutex and block untill a cond get a signal*/
    pthread_cond_wait(&cond, &lock);
    /* execute your code */

    your_condtion = 0;

    /* signaling the producer that we "consumed" the data */
    pthread_cond_signal(&cond);
    pthread_mutex_unlock(&lock);

您应该按如下方式发送事件:

代码语言:javascript
运行
复制
    /* checking if consumer already used our data */
    pthread_mutex_lock(&lock);
    while(your_condition != 0)
        pthread_cond_wait(&cond, &lock);
    /* execute your code */
            your_condition = 1;
    /* sending event */
    pthread_cond_signal(&cond);
    pthread_mutex_unlock(&lock);

您可以使用my producer consumer example作为参考

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27342982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档