c - pthread_cond_wait() 实际上是如何工作的?

标签 c multithreading parallel-processing pthreads

因此,pthread_cond_wait()的想法是,它将解锁互斥体并等待条件。

假设您首先手动解锁互斥体,然后等待条件出现。在该时间范围内,在这两个操作之间,您必须假设可能会发生一些不好的事情,另一个线程将锁定互斥体,这是不好的。如果先等待再解锁也是一样,这是不可能的。

所以,我的问题是:
pthread_cond_wait() 实际上是如何工作的?

线程调用该函数并传递一个锁定的互斥体,然后等待条件解决?

如果该变量已被该线程锁定,另一个线程如何修改该变量?

我的第一个想法是,互斥锁必须是递归的,但是递归只允许同一线程多次锁定互斥锁。

最佳答案

不知道为什么我不直接用谷歌搜索pthread_cond_wait()的规范。

我想当我开始时我并不完全知道我的问题会是什么。

无论如何,我的问题的答案可以在这里找到:http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_cond_wait.html

关于c - pthread_cond_wait() 实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46791907/

相关文章:

c - 用于通过 wifi radio 向其范围内的设备发送广播数据包的套接字程序

c - 编译 p3dfft 驱动程序时未解析的 MPI Fortran 符号

java - 对象是否留在线程中

global-variables - MATLAB:在并行模式下运行时全局变量会发生什么情况?

python - 如何不浪费时间等待 Python 中的许多网络绑定(bind)任务?

c - 查找与正则表达式匹配的子字符串

c - C语言中的深度优先搜索

c++ - 安全地停止线程

python - 静态方法和线程安全应用程序

c# - 如何使多个 API 调用更快?