Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+的使用+;11标准::唯一锁<;std::mutex>;lk(myMutex);不太清楚_C++_Multithreading_C++11_Concurrency_Mutex - Fatal编程技术网

C++ C+的使用+;11标准::唯一锁<;std::mutex>;lk(myMutex);不太清楚

C++ C+的使用+;11标准::唯一锁<;std::mutex>;lk(myMutex);不太清楚,c++,multithreading,c++11,concurrency,mutex,C++,Multithreading,C++11,Concurrency,Mutex,这基本上是一个并发程序,它实现了一个销售人员的模拟,该销售人员必须为前来其店铺的一些客户提供服务。以下是班级销售员的代码: class SalesMan { public: Room *room; std::unique_lock<std::mutex> *salesman; Salesman(Room *r) { this->room = r; sal

这基本上是一个并发程序,它实现了一个销售人员的模拟,该销售人员必须为前来其店铺的一些客户提供服务。以下是班级销售员的代码:

class SalesMan
{
    public:
    Room *room; 
    std::unique_lock<std::mutex> *salesman; 
    Salesman(Room *r)
    {
        this->room = r;                         
        salesman = new std::unique_lock<std::mutex>(room->salesman,std::defer_lock_t());
    }
    void operator()()
    {
        while (true)
        {
            if (room->look() == 0) //checks if there are customers awaiting
            {
                std::unique_lock<std::mutex> lk(room->salesman); 
                room->chair.wait(lk); //salesman rests on the chair
            }


            room->waiting.notify_one();  
            room->serving.notify_one(); 
        }
    }
};

那么,如果我们不使用锁定/解锁函数,那么类“sasper”中sasper的用法是什么呢?

std::unique\u lock
在其构造函数中锁定互斥体,并在其析构函数中解锁。将
std::unique\u lock
存储为数据成员(更不用说指针)是有问题的。您可能想使用std::mutex来代替。相关链接:,
salesman->lock()
*buy things*
salesman->unlock()