c - 等待条件变量的线程是否可以被在等待之前发出的信号唤醒
问题描述
t
等待条件变量的线程是否有可能在等待之前被另一个线程(实际上可能在哪里)发出信号cond
唤醒?t'
t'
t
t
我已经尝试制作一个 C 程序来执行此操作 1000 次,但它从未发生过,我也阅读了有关信号和等待的手册页,但我找不到答案。
这是一个在单个线程上可能看起来的示例
pthread_cond_signal(&cond);
pthread_cond_wait(&cond, &mutex); //Is there a chance that this wait gets cancelled by the signal above
谢谢你的帮助!
解决方案
等待条件变量的线程能否被在等待之前发出的信号唤醒。
它不能。但是,它可以被虚假的唤醒唤醒,人们不会知道其中的区别。
等待代码必须等待共享状态的变化,条件变量唤醒提示共享状态可能已经改变,必须重新评估。
推荐阅读
- java - 根据java中的数据类型解释以下赋值
- javascript - 从 webpack 生成的代码中删除 exports 变量
- node.js - Kubernetes 和 Socket.io 404 错误 - 在本地工作,但在应用到 kubernetes 后不能
- excel - mmm dd, yyyy hh:mm AM/PM 在 Excel 中无法识别
- python - 单选按钮 Tkinter 函数中的返回选择
- python - 是否有同时运行多个计时器并在特定事件发生时停止计时器?
- java - 将 Kotlin 扩展方法添加到纯 Java 库
- javascript - 页面刷新/重新加载后不显示警报(Angular v10)
- javascript - Jquery $('#id').find('option').size() vs $('#id option').size() 关于“最大调用堆栈大小”错误
- spring-boot - 如何在 Spring Boot 应用程序中连接后端和前端?