[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
相关文章推荐
- mutex and condition_variable[c++11]
- C++11学习笔记之三lamda表达式,std::function, std::bind
- [cpp]C++11学习笔记-chrono
- [cpp]c++11学习笔记-std bind
- [cpp]c++11学习笔记-std function
- [cpp]c++11学习笔记-moden c++
- C++11学习笔记6---std::function
- C++11学习笔记-----线程库std::thread
- [cpp].c++11学习笔记-std thread
- C++11 学习笔记 std::function和bind绑定器
- [cpp]C++11学习笔记-filesystem
- C++11学习笔记:std::move和std::forward源码分析
- An ffmpeg and SDL Tutorial 学习笔记(四)
- 【C++11学习笔记】返回类型后置语法
- C++11学习笔记
- An ffmpeg and SDL Tutorial 学习笔记(五)
- STL学习笔记(二)——C++11新特性
- WMI009-WMI学习笔记(九)——System.Management and System.Management.Instrumentation Namespaces(命名空间)
- javascript学习笔记——BOM and DOM
- Cocos2d-x学习笔记(19)(TestCpp源代码分析-3)