我正在尝试制作一个使用一个线程,互斥锁和唯一锁定的简单程序。
我正在尝试同步Main循环和Thread循环,如下所示: 主循环打印“M”一次,然后Thread循环打印“T”(依此类推)。 我正在尝试创建条件变量和唯一锁定,但在尝试锁定/解锁互斥锁时,我在线程函数中出现错误。 有人可以帮我吗? 它只打印Main的循环 - “M”
这是我的代码:
#include <iostream>
#include <mutex>
#include <condition_variable>
#include <thread>
using namespace std;
mutex update_mtx; // lock for updating information //
condition_variable cv;
void foo()
{
unique_lock<mutex> key(update_mtx);
int len = 5;
while (len != 0)
{
cv.wait(key);
update_mtx.lock();
cout << "T";
update_mtx.unlock();
len--;
}
}
int main()
{
int len = 5;
thread first(foo);
while (len != 0){
update_mtx.lock();
cout << "M";
update_mtx.unlock();
cv.notify_all();
len--;
}
first.join();
system("pause");
return 0;
}