locking - 为什么我们不在信号生产者而不是消费者检查条件变量?
问题描述
据我所知,消费者在等待信号时会检查条件变量。
Consumer:
lock.Lock()
while(condition) {
cond.Wait()
}
lock.Unlock()
Producer:
lock.Lock()
changeCondition()
cond.Signal() or cond.Broadcast()
lock.Unlock()
为什么不能:
Consumer:
lock.Lock()
cond.Wait()
lock.Unlock()
Producer:
lock.Lock()
changeCondition()
if(condition) {
cond.Signal() or cond.Broadcast()
}
lock.Unlock()
解决方案
推荐阅读
- azure - 将我的应用升级到 Asp.net Core 2.1.1 后,Azure 应用服务抛出 System.BadImageFormatException
- html - 网络托管 public_html 文件夹中的图像未显示
- boto3 - AWS SSM 参数 GET 使用 KMS 解密
- docusignapi - DocuSign API - 如何让签名者收到已签名文档的副本
- linux - 有没有一种简单的方法可以按目录中的文件类型汇总磁盘使用情况?
- java - 如何在 DynamoDB 中存储对象数组
- hyperledger-fabric - 通道 MSP(cred 文件)在 Hyperledger Fabric 节点上本地存储在哪里?
- macos - Mac OS High Sierra 日志显示位置
- javascript - 使用 Promise 递归
- php - PHP 函数 (globals/locals) 中的变量是如何继承的?