![]() |
1
2
this C++ threading blog post 应该给你一个参考实现,但我认为你是危险的成功接近自己。解决您的具体问题:
二者都 读写互斥锁。 如果没有,那么当队列大小为1并且读写器同时工作时会发生什么情况? |
![]() |
2
3
我有一个使用来自 http://danborn.net/code/ 但正如我前面提到的,因为它使用一个条件变量,所以它也使用1个互斥。 这是增强版,同样是单互斥: http://www.justsoftwaresolutions.co.uk/threading/implementing-a-thread-safe-queue-using-condition-variables.html |
![]() |
3
2
我想你误解了什么——打电话是完全合法的
你的意思是“从队列的头上删除一个项目”,这会改变队列的状态 队列(换句话说,它也是一个“写”。)根据你的情况,最好从“消费者和生产者”的角度来考虑,而不是“读者和作者”。 一个互斥锁(以保证对队列的独占访问)和两个条件变量(“可用数据”、“可用可用空间”)就足够了。(如果 我只是完整地提一下。)
如果你的阅读线索是
严格地
读者(也就是说,他们
不
以任何方式修改共享队列数据结构,例如从队列中弹出一个项目)
|
![]() |
4
1
|
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |
![]() |
user1700890 · 了解交互式代理Python API中的线程 2 年前 |
![]() |
AntonBoarf · 为什么要将实例变量指定给局部变量? 2 年前 |
![]() |
rhymes · 如何让线程操作相同的java列表 2 年前 |