Example for boost shared_mutex (multiple reads/one write)?

前端 未结 6 1593
旧时难觅i
旧时难觅i 2020-11-22 12:48

I have a multithreaded app that has to read some data often, and occasionally that data is updated. Right now a mutex keeps access to that data safe, but it\'s expensive bec

6条回答
  •  野性不改
    2020-11-22 13:22

    Since C++ 17 (VS2015) you can use the standard for read-write locks:

    #include 
    
    typedef std::shared_mutex Lock;
    typedef std::unique_lock< Lock > WriteLock;
    typedef std::shared_lock< Lock > ReadLock;
    
    Lock myLock;
    
    
    void ReadFunction()
    {
        ReadLock r_lock(myLock);
        //Do reader stuff
    }
    
    void WriteFunction()
    {
         WriteLock w_lock(myLock);
         //Do writer stuff
    }
    

    For older version, you can use boost with the same syntax:

    #include 
    #include 
    
    typedef boost::shared_mutex Lock;
    typedef boost::unique_lock< Lock >  WriteLock;
    typedef boost::shared_lock< Lock >  ReadLock;
    

提交回复
热议问题