`
shake863
  • 浏览: 661207 次
  • 性别: 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()` 是 POSIX 线程库中的一个关键函数,用于线程同步。它与互斥锁(mutex)一起工作,允许线程在特定条件满足时挂起执行,等待其他线程发出信号。在深入分析 `pthread_cond_wait()` 的用法之前,...

    信号pthread_cond_wait

    《深入理解pthread_cond_wait:多线程同步的关键》 在多线程编程中,线程间的同步至关重要,而`pthread_cond_wait`就是一种用于线程间同步的重要工具,它属于POSIX线程库(pthread)的一部分。这个函数使得一个线程...

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

    在Linux多线程编程中,`pthread_cond_wait()`是一个关键的同步原语,它用于线程间的通信和协作。在使用`pthread_cond_wait()`时,通常会在调用它之前加入一个while循环来判断条件是否满足。这个做法是为了避免虚假...

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

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

    Linux多线程之条件阻塞代码

    在这个主题中,我们将深入探讨如何使用互斥锁(mutex)和条件变量(pthread_cond_wait, pthread_cond_signal)来实现线程间的同步和通信,从而解决条件阻塞的问题。 1. **互斥锁(Mutex)** 互斥锁是一种同步机制...

    pthread_cond

    通过调用`pthread_cond_wait()`函数,线程可以在等待条件变为真时释放对互斥锁的持有,进入睡眠状态。当其他线程改变了这个条件并调用`pthread_cond_signal()`或`pthread_cond_broadcast()`时,等待的线程会被唤醒,...

    Posix(1).rar_POSIX Pthread_posix_pthread_pthread posix

    6. **线程间通信**:`pthread_cond_broadcast()`、`pthread_cond_signal()`和`pthread_cond_wait()`等函数用于线程间的通信,协调工作进度。 7. **线程局部存储**:`pthread_key_create()`和`pthread_getspecific()...

    pthreads_pthread_

    5. `pthread_cond_t` 和 `pthread_cond_init() / pthread_cond_wait() / pthread_cond_signal() / pthread_cond_broadcast()`:条件变量,用于线程间通信和同步,当满足特定条件时,一个线程通知其他等待线程。...

    pthread-primer.rar_Pthread Primer pdf_pthread_pthread primer

    create()`用于创建新的线程,`pthread_join()`用于等待线程结束,`pthread_mutex_t`和`pthread_mutex_lock()`、`pthread_mutex_unlock()`用于互斥锁,保证资源的安全访问,`pthread_cond_t`和`pthread_cond_wait()`...

    互斥锁与条件变量详解 疑问全解

    互斥锁与条件变量详解 互斥锁(Mutex)是多线程编程中最基本的同步机制之一,它用于保护共享资源免受多个...理解pthread_cond_wait()函数的作用非常重要,它是POSIX线程信号发送系统的核心,也是最难以理解的部分。

    linux pthread 多线程控制示例代码

    通过`pthread_create()`创建线程,然后使用`pthread_join()`等待线程结束,可能还会有条件变量`pthread_cond_t`的使用,如`pthread_cond_wait()`和`pthread_cond_timedwait()`,以实现线程间的协作。`sleep()`函数...

    数码天空破解文件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 ...

    pthread_self获取当前调用线程的识别码

    4. **条件变量**:在使用 `pthread_cond_wait` 和 `pthread_cond_signal` 等条件变量函数时,也需要用到 `pthread_self` 来确定发送信号或等待的线程。 5. **线程退出**:有时,你需要知道哪个线程正在执行特定的...

    pthread(arm_linux).zip_ARM Linux_arm_arm linux pthread_arm pthre

    常用函数有`pthread_cond_init()`、`pthread_cond_wait()`和`pthread_cond_signal()`。 3. 信号量:一种计数型同步机制,可以实现线程间的资源控制和同步。`sem_open()`、`sem_post()`和`sem_wait()`等函数用于信号...

    Windows可使用的pthread库

    - **条件变量**:允许线程等待某个特定条件满足后再继续执行,例如`pthread_cond_wait`和`pthread_cond_signal`。 - **读写锁**:允许多个线程同时读取共享数据,但只允许一个线程进行写操作,如`pthread_rwlock_...

    2_pthread_sync.tgz

    线程可以使用`pthread_cond_wait`函数等待条件变量,并在条件满足时通过`pthread_cond_signal`或`pthread_cond_broadcast`唤醒等待的线程。条件变量常与互斥锁配合使用,防止信号发送时的数据不一致。 3. **信号量*...

    windows 下的pthread 库

    - **条件变量**(Condition Variable):`pthread_cond_t`表示条件变量,`pthread_cond_init()`和`pthread_cond_destroy()`用于初始化和销毁,`pthread_cond_wait()`和`pthread_cond_signal()`或`pthread_cond_...

    Linux多线程之同步.docx

    - **等待(pthread_cond_wait())**:当线程需要等待某个条件成立时,调用 `pthread_cond_wait()`。这个函数会先释放互斥锁,然后挂起当前线程。只有在其他线程对条件变量发出信号或广播后,该线程才能重新获得锁并...

Global site tag (gtag.js) - Google Analytics