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

POSIX条件变量问题???大侠进

    来源: 互联网  发布时间:2017-04-03

    本文导语:  pthread_mutex_t mutex; pthread_cond_t cond; void *thwork(void *arg) {     pthread_detach(pthread_self());     pthread_mutex_lock(&mutex);     pthread_cond_wait(&cond,&mutex);//查资料说wait会阻塞线程,释放mutex锁。。。然后等待条件成立,然后返回继续...


pthread_mutex_t mutex;
pthread_cond_t cond;

void *thwork(void *arg)
{
    pthread_detach(pthread_self());
    pthread_mutex_lock(&mutex);
    pthread_cond_wait(&cond,&mutex);//查资料说wait会阻塞线程,释放mutex锁。。。然后等待条件成立,然后返回继续执行。
    pthread_mutex_unlock(&mutex);//我就想不明白,既然调wait的时候已经释放了mutex锁,为什么这里还要释放一次呢。
    pthread_exit((void*)0);
}

    int tmp=0;
    pthread_t pthid;
    pthread_mutex_init(&mutex,NULL);
    pthread_cond_init(&cond,NULL);
    pthread_create(&pthid,NULL,thwork,NULL);
    sleep(60);
    pthread_cond_signal(&cond);


|
cond_wait返回会重新获取锁。

还是扎实的学习UNIX环境高级编程等书吧。

|
pthread_cond_wait先unlock,等待, 被唤醒后再lock.
所以pthread_cond_wait返回时,mutex是被自己lock的。所以要再次释放
man pthread_cond_wait

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












  • 相关文章推荐
  • 在linux下使用POSIX多线程库开发应用程序的时候需要定义宏_POSIX_C_SOURCE和_REENTRANT吗?
  • POSIX IPCs 和 System V IPCs
  • makefile中的D_POSIX_C_SOURCE是什么意思?
  • 关于什么是POSIX?
  • 请问以下操作系统中,支持posix的有哪些呢?
  • redhat linux支持什么标准? POSIX, ANSI,SVR4?
  • 谁有关于posix的详细资料
  • 请问那里能下载POSIX函数参考手册
  • aix支持POSIX线程标准吗?
  • 请教POSIX 和 System V 实现的内存共享的相同及不同之处
  • LINUX如何调整POSIX消息队列大小
  • posix共享内存区
  • POSIX 文件系统 Libsqlfs
  • 哪里有POSIX标准下载(免费的)?
  • 请问怎样找posix文档?
  • 请问谁知道哪能找到“POSIX多线程程序设计”么?
  • 求,Programming with POSIX Threads by David Butenhof,多谢
  • 求助关于posix ipc 对象创建相关问题
  • 哪本书介绍mutex、POSIX 线程详解
  • SUSv2是一种*nix接口标准吗,就像POSIX.1-2001一样?


  • 站内导航:


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

    ©2012-2021,