Man*_*Row 5 c posix mutex pthreads condition-variable
假设某些条件变量"cond"与互斥变量"mutex"相关联.如果线程cond
在调用后处于休眠状态pthread_cond_wait(&cond,&mutex)
,并且另一个已mutex
锁定的线程已完成,则该线程在调用pthread_cond_signal(&cond)
之前或之后调用pthread_mutex_unlock(&mutex)
是否重要?它是否甚至需要解锁互斥锁pthread_cond_signal(&cond)
,因为睡眠线程无论如何都会获取互斥锁?
编辑:根据https://computing.llnl.gov/tutorials/pthreads/#ConVarOverview,"调用pthread_cond_signal()后未能解锁互斥锁可能不允许匹配的pthread_cond_wait()例程完成(它将保持阻塞状态). " 我想那时,解锁,也许只是之后才需要.
您应该始终在调用后解锁互斥体pthread_cond_signal
。以下是一些值得阅读的好问题/答案:
调用 pthread_cond_signal 而不锁定互斥体
我现在不会想到这一点,但我很确定有一个很好的理由(就竞争条件而言)您不想在发出信号之前解锁互斥体。
归档时间: |
|
查看次数: |
3973 次 |
最近记录: |