我正在通过指针传递一些变量(cv::Mat和bool类型)到几个线程中,并试图理解何时需要使用互斥锁。我发现如果在cv::Mat上不使用互斥锁,我的程序会崩溃(可能是因为一个线程正在写入另一个线程正在读取的内存区域),所以我已经为这些变量实现了互斥锁,问题得到了解决。
但现在,互斥锁是我要通过指针传递给每个线程的另一个变量。所以,在这种情况下,处理互斥锁变量的使用与需要互斥锁的其他变量相同,那么互斥锁有什么特别之处,我为什么不需要一个互斥锁呢(当然,这样做将无休止地进行,概念是行不通的)。
明确一点,我现有的代码运行良好,这更多是为了教育目的。
示例:
但现在,互斥锁是我要通过指针传递给每个线程的另一个变量。所以,在这种情况下,处理互斥锁变量的使用与需要互斥锁的其他变量相同,那么互斥锁有什么特别之处,我为什么不需要一个互斥锁呢(当然,这样做将无休止地进行,概念是行不通的)。
明确一点,我现有的代码运行良好,这更多是为了教育目的。
示例:
//Common frames
cv::Mat captureimage, displayimage;
std::mutex capturemutex, displaymutex;
//Start image capture thread
std::thread t_imagecapture( CaptureImageThread, &captureimage, &capturemutex, &exitsignal );
//Start image processor thread
std::thread t_imageprocessor( ProcessImageThread, &captureimage, &capturemutex, &exitsignal );
//Start display thread
std::thread t_displayupdate( DisplayUpdateThread, &displayimage, &displaymutex, &exitsignal );