您的位置:首页 > 编程语言 > C语言/C++

[cpp]c++11学习笔记-std mutex and condition

2017-04-09 22:25 471 查看

mutex用法

#include <mutex> //头文件
#include <thread>
#include <iostream>
using namespace std;

class cls
{
public:
void thread1()
{
m_mutex.lock();
for (int i = 0; i < 10; ++i)
{
cout << "thread1" << endl;
}
m_mutex.unlock();
}
void thread2()
{
std::lock_guard<std::mutex> guard(m_mutex); //guard
for (int i = 0; i < 10; ++i)
{
cout << "thread2" << endl;
}
}

std::mutex m_mutex;
};

int main()
{
cls c;
std::thread t1(&cls::thread1, &c);
std::thread t2(&cls::thread2, &c);

t1.join();
t2.join();

return 0;
}


condition使用

#include <condition_variable> //头文件
#include <mutex>
#include <thread>
#include <iostream>
#include <chrono>
using namespace std;

class cls
{
public:
void thread1()
{
std::this_thread::sleep_for(std::chrono::milliseconds(3000));
m_cond.notify_all();
cout << "notify_all" << endl;
}
void thread2()
{
cout << "enter thread2" << endl;
std::unique_lock<std::mutex> lock(m_mutex);
m_cond.wait(lock);
cout << "leave thread2" << endl;
}

std::condition_variable m_cond;
std::mutex m_mutex;
};

int main()
{
cls c;
std::thread t1(&cls::thread1, &c);
std::thread t2(&cls::thread2, &c);
std::thread t3(&cls::thread2, &c);

t1.join();
t2.join();
t3.join();

return 0;
}


参考:

http://blog.csdn.net/hengyunabc/article/details/33336795
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cpp mutex condition