相关疑难解决方法(0)

提升shared_lock.阅读首选?

我正在查看用于读取器/写入器锁的boost库(版本1.45).当我对它进行测试时,似乎shared_ptr更喜欢我的读取器线程,即当我的编写器试图锁定它的操作时,它并没有阻止任何后续读取发生.

是否有可能在提升中改变这种行为?

using namespace std;
using namespace boost;

mutex outLock;
shared_mutex workerAccess;
bool shouldIWork = true;

class WorkerKiller
{
public:   

    void operator()()  
    {
        upgrade_lock<shared_mutex> lock(workerAccess); 
        upgrade_to_unique_lock<shared_mutex> uniqueLock(lock);

        cout << "Grabbed exclusive lock, killing system" << endl;
        sleep(2);
        shouldIWork = false;
        cout << "KILLING ALL WORK" << endl;  
    }  

private:  
};

class Worker
{  
public:   

    Worker()
    {  
    }  

    void operator()()  
    {
        shared_lock<shared_mutex> lock(workerAccess); 

        if (!shouldIWork) {
            outLock.lock();
            cout << "Workers are on strike.  This worker refuses to work" << endl;
            outLock.unlock(); …
Run Code Online (Sandbox Code Playgroud)

c++ boost

15
推荐指数
1
解决办法
7343
查看次数

标签 统计

boost ×1

c++ ×1