原文:https://blog.csdn.net/KnightOnHourse/article/details/80414863
#include<iostream>
#include<iomanip>
using namespace std;
#include <boost/thread.hpp>
#include <boost/bind.hpp>
#include <boost/thread/mutex.hpp>
using namespace boost;
typedef boost::mutex CMutex;
typedef boost::lock_guard<CMutex> CLockGuardMutex;
typedef boost::thread_group CThreadGroup;
void main()
{
CMutex oMutex;
cout << "First Lock......" << endl;
oMutex.lock();
cout << "Second Lock......" << endl;
oMutex.lock();
cout << "Unlock Once......" << endl;
oMutex.unlock();
cout << "Unlock Twice......" << endl;
oMutex.unlock();
}
注意兩個以上互斥鎖可能會產生死鎖問題,即兩個鎖相互等待對方釋放,程序鎖死不動
1.一個線程中對同一個mutex連續兩次lock會導致程序卡死;
2.兩個線程對同一個mutex同時lock也會導致程序卡死(在欠驅手串口通信讀、寫線程中測試)。
參考:
C++11併發與多線程總結(二) --獨佔互斥鎖--mutex,lock_guardy與其他mutex https://blog.csdn.net/Rice__/article/details/105046267