c++ - C ++许多读者单写互斥体饥饿
问题描述
我正在做一些事情,许多读者都访问一个向量,但一个作家会随机插入以更新向量。有没有一种简单的方法让读者屈服于作者?
显然 GCC 和其他人使用有利于读者的 POSIX 线程,而 Windows 则试图对所有人公平。我想要一些能让作者优先于读者的东西(我不担心读者饿死,作者很断断续续)。
我的理解是可以使用条件变量,但作者不是必须专门让每个读者进入吗?我希望作者大部分时间都处于休眠状态。
我正在尝试做这样的事情(不完全正确的 C++):
Writer:
while(true){
sleep(long time);
writer_waiting = true; //<- this is the critical part I don't know how to implement
mutex.lock();
writer_waiting = false;
// Party
mutex.unlock();
}
Readers:
while(true){
wait(writer_waiting);
mutex.lock_shared();
// Party
mutex.unlock_shared();
}
解决方案
推荐阅读
- jquery - Webpack 4:让 Jquery 跨网站在全球范围内可用
- apache-spark - Spark中的广播哈希连接和广播嵌套循环连接有什么区别?
- c# - 让 Json.NET + MongoDB Bson 一起玩得很好
- python - 无法计算生成对象的长度
- reactjs - 如何将 React pwa 部署到 IBM Cloud Kubernetes 集群?
- indexing - 400 没有找到与单个订单匹配的索引
- http-status-code-404 - Github 页面返回 404
- reactjs - 错误无法读取带有样式组件的 React 语义 UI 弹出窗口中未定义的属性“左侧”
- python - 将时间序列的先前条目写入附加列
- android - com.ontbee.legacyforks.cn.pedant.SweetAlert。SweetAlertDialog:未知动画名称:Rotate3dAnimation 错误