`
shake863
  • 浏览: 638652 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对 pthread_cond_wait 的错误理解

 
阅读更多

在线程的调度中经常会用到 pthread_cond_wait 来block 线程 等待线程条件的到来。
之前以为pthread_cond_wait 是在 条件满足的时候 释放锁。

后来发现原来【pthread_cond_wait 是在阻塞的时候就释放锁了,解除阻塞的时候又获取了锁】

后来想想也是啊,自己已经阻塞了 再拿着锁,其他线程还怎么运行啊。

切记啊!!

分享到:
评论
2 楼 shake863 2008-09-28  
superbedlamite 写道

感觉你还是理解错了
应该是一直在等待的

我没有说关于等待的事情啊,我说的是锁,什么时候释放锁
1 楼 superbedlamite 2008-09-26  
感觉你还是理解错了
应该是一直在等待的

相关推荐

    pthread_cond_wait() 用法深入分析

    以下是对pthread_cond_wait的用法进行了详细的分析介绍,需要的朋友可以过来参考下

    信号pthread_cond_wait

    信号pthread_cond_wait信号pthread_cond_wait信号pthread_cond_wait信号pthread_cond_wait信号pthread_cond_wait

    pthread_cond_wait详解

    一篇博客内容 pthread_cond_wait详解

    为什么在pthread_cond_wait()前要加一个while循环来判断条件是否为假呢?.Linux 多线程

    为什么在pthread_cond_wait()前要加一个while循环来判断条件是否为假呢?.zip

    Linux多线程之条件阻塞代码

    Linux多线程之条件阻塞代码 包含mutex 与pthread_cond_wait,pthread_cond_signal的应用 详细内容见readme.txt

    Linux多线程编程,替代sleep的几种方式

    我只想要进程的某个线程休眠一段时间的,可是用sleep()是将整个进程都休眠的,这个可能达不到,我们想要的效果...  采用pthread_cond_timedwait(pthread_cond_t* cond, pthread_mutex_t *mutex, const struct timesp

    数码天空破解文件cccam205

    libpthread.so.0 pthread_cond_wait recv connect pthread_create send accept pthread_cond_signal pthread_cond_init pthread_mutex_unlock pthread_mutex_lock pthread_mutex_init _Jv_RegisterClasses close ...

    linux c++线程

    本人主要想练习一下socket c++ 多...现在遇到的问题是,不知道咋回事,主线程 pthread_cond_signal (&cond) 发送的条件 似乎 新的线程 pthread_cond_wait (&cond, &mutex) 没有收到,不知是不是发生传说中的死锁???

    互斥锁和条件锁的讲解和使用

    使用pthread_cond_wait前要先加锁 2。pthread_cond_wait内部会解锁,然后等待条件变量被其它线程激活 3。pthread_cond_wait被激活后会再自动加锁 激活线程: 1。加锁(和等待线程用同一个锁) 2。pthread_cond_...

    Linux线程同步之条件变量

     等待 pthread_cond_wait  满足条件给向进程发送信号 pthread_cond_signal  下面程序展示了利用条件变量等待另外两个线程满足条件时,第三个进程继续向前执行 #include #include <pthread> #include p

    嵌入式的多线程应用程序设计

    pthread_cond_wait(&b->notfull, &b->lock); } /* Write the data and advance write pointer */ b->buffer[b->writepos] = data; b->writepos++; if (b->writepos >= BUFFER_SIZE) b->writepos = 0; /*...

    浅谈Linux条件变量的使用

    Linux线程同步之间存在多种机制,条件变量是一种类似操作系统里提到的生产者-消费...pthread_cond_wait(qcond,qlock); 或者 pthread_cond_wait(qcond,qlock,timeout); reset条件变量… pthread_mutex_unlock(qlock);

    linux C++ 实现线程池(避免线程创建的耗时)

    linux下c++写的线程池,可以了解pthread_cond_timewait和pthread_detach的用法,自定义最大使用的线程数量,线程退出线程池的超时时间,任务优先级处理。

    golang模拟实现带超时的信号量示例代码

    pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime); 然后在查看golang的document后,发现golang里并没有实现带超时的信号量,官方文档在这里。 原理 我的...

    cpp-C实现的定时器

    开启线程,利用小根堆存时间事件,pop出最近的事件,假如到时间就执行, 一直pop,直到堆顶离执行还有x秒,线程等待x秒,等待可以采用epoll_wait 的超时,这里采用的是线程锁信号量pthread_cond_timedwait的超时。

    多线程互斥锁和条件变量demo

    基于多线程,学习互斥锁和pthread_cond_wait条件变量实现的demo, 初学者学习。

    vxworks 并发服务器程序

    // pthread_cond_wait(&client;_list->cond, &client;_list->mutex); // } //遍历链表 temp = client_list->client_head.next; while (temp != &client;_list ->client_head) { /* 将socket描述符加入读描述...

    linux线程间的同步与互斥知识点总结

    在线程并发执行的时候,我们需要保证临界资源的安全访问,防止...pthread_cond_wait 条件不满足 会释放锁并阻塞等待 , 这个函数是原子性操作:1.将线程放入条件等待队列 2.释放锁  条件满足 则线程会被唤醒并加锁 pthr

    linux pthread 多线程控制示例代码

    一个示例程序,演示在linux环境下如何使用pthread实现多线程的使用和控制。

Global site tag (gtag.js) - Google Analytics