C++ 使用boost::thread跨线程锁定网络摄像头帧

C++ 使用boost::thread跨线程锁定网络摄像头帧,c++,multithreading,boost,C++,Multithreading,Boost,我正试图使用boost::lock为相机读取添加线程安全性,但我被卡住了。在框架编写器线程A中,我有: h 这可以编译,但帧是黑色的。我在哪里搞砸了?(我是新手,请原谅我的白痴) 谢谢。它们在线程A中也是黑色的吗?啊,更改w_lock.release()到w_lock.unlock()似乎已经修复了它。谢谢你的时间。哦,对了,接得好。我通常更喜欢使用作用域锁(利用RAII),所以很少需要显式解锁。 #include <boost/thread/locks.hpp> #include

我正试图使用boost::lock为相机读取添加线程安全性,但我被卡住了。在框架编写器线程A中,我有:

h

这可以编译,但帧是黑色的。我在哪里搞砸了?(我是新手,请原谅我的白痴)


谢谢。

它们在线程A中也是黑色的吗?啊,更改
w_lock.release()
w_lock.unlock()似乎已经修复了它。谢谢你的时间。哦,对了,接得好。我通常更喜欢使用作用域锁(利用RAII),所以很少需要显式解锁。
#include <boost/thread/locks.hpp> 
#include <boost/thread/shared_mutex.hpp> 
#include <boost/system/config.hpp>

typedef boost::shared_mutex Lock;
    typedef boost::unique_lock< Lock > WriteLock;
    typedef boost::shared_lock< Lock > ReadLock;
    Lock OccamLock;
    WriteLock w_lock(OccamLock); 

//calls frames from camera

            cv::Mat f1 = cv::Mat_<uchar>(images[0]->height, images[0]->width, (uchar*)images[0]->data[0], images[0]->step[0]);


            f1.copyTo(img0);

            w_lock.release();
typedef boost::shared_mutex Lock;
    typedef boost::unique_lock< Lock > WriteLock;
    typedef boost::shared_lock< Lock > ReadLock;
  ReadLock r_lock(oGrab->OccamLock);  //oGrab is the reference to the class in Thread A

                imgs[0] = oGrab->img0;

                r_lock.release();