当前位置:  技术问答>linux和unix

在linux7.3下多个线程使用 pthread_cond_t 的一个小问题。

    来源: 互联网  发布时间:2015-07-11

    本文导语:  当我用两个线程,一个调用pthread_cond_wait,另一个调用pthread_cond_singnal 没有问题。 但是同样的代码 pthread_mutex_lock(&m_lock) pthread_cond_wait(&m_cond,&m_lock) pthread_mutex_unlock(&m_lock) 我期望是两个线程都会睡觉,结果是 同时被两...

当我用两个线程,一个调用pthread_cond_wait,另一个调用pthread_cond_singnal
没有问题。

但是同样的代码
pthread_mutex_lock(&m_lock)
pthread_cond_wait(&m_cond,&m_lock)
pthread_mutex_unlock(&m_lock)

我期望是两个线程都会睡觉,结果是
同时被两个以上的线程调用就会出现线程被唤醒的情况,难道只支持一个线程wait吗?

那么pthread_cond_broadcast()这个函数说的激放所有的等待线程有是怎么回是?
又要meutex有何用?

|
to gettext(冰雪之崖)
如果保护的是同一个临界区,用两个mutex如何起到保护作用啊?


pthread_cond_wait本来就会出现假唤醒的情况,因此应该在一个循环里去不断的检查条件并调用。
while(!condition)
  pthread_cond_wait(...);

多个线程同时等待一个条件,用pthread_cond_broadcast会安全一些,因为你不会漏掉任何一个在等待的线程。broadcast是指向所有的在等待的线程发通知,但只要加上了上面的循环检查,实际被唤醒的只可能有一个。

|
在多个线程被唤醒时,需要重新获得m_lock锁才行,因此只有一个线程能够得到锁并从pthread_cond_wait中返回。

|
对,不同的pthread应该用不同的m_lock。

|
不同的线程用不同的mutex看看呢?

|
学习,刚学Linux,学习呀!
以前一直是窗户的!

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 哪有LINUX7.2和Borland Kylix3.0下载啊????
  • linux7.2下linuxconf的使用?
  • linux7.0是否支持光驱启动
  • LINUX7。1的光盘问题
  • redhat linux7.2的版本问题
  • LINUX7.2支持AMD的CPU吗?
  • redhat linux7.1安装不了,怎么办?
  • 在redhat linux7.2 下,如何安装orcle9i???
  • linux7.3求助
  • 大家认为Linux Mendrake8.2好还是RedHat Linux7.3好
  • LINUX7.3是否支持INTEL 845G自带的显卡
  • 请问在red hat linux7.3怎么装网卡
  • 如何卸掉red hat linux7.2
  • 怎么看Redhat Linux7。2中是否安装了显卡?
  • 关于LINUX7.3?高分?
  • RedHat Linux7.2 怎样作代理服务器吗?
  • ★菜鸟问:怎么在RED HAT LINUX7.2中用169上网??
  • 请教red hat linux7.1安装问题
  • 如何在Linux7.2下通过代理服务器上网???
  • 散分了,linux7.2安装时设置的root密码会过期吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3