首页 > 解决方案 > 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();
   }
     

标签: c++mutex

解决方案


推荐阅读