互斥和条件变量的问题

时间:2016-06-18 08:55:04

标签: visual-c++ conditional mutex

我正在尝试制作一个使用一个线程,互斥锁和唯一锁定的简单程序。

我正在尝试同步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;
}

0 个答案:

没有答案