C++ 11相关知识学习
2017-02-25 17:56
295 查看
std::mutex
std::mutex定义在<mutex>头文件中。mutex类是一个同步原型,用来保护共享数据被多个线程同步访问的同步。mutex提供互斥,非递归拥有权语义:
一个调用线程拥有一个mutex。从它成功调用lock或者try_lock,直到它调用unlock。
当一个线程拥有一个mutex,所有其它的线程如果想要尝试获得mutex的拥有权,则会接收一个false,或者被block(当调用lock时)。
一个线程在它调用lock或try_lock之前不能拥有mutex的所有权。
当mutex被销毁,但是它仍然属于其他线程时,或者说一个线程被终止,但是它拥有mutex时,程序的行为是未定义的。
std::mutex既不能copy,也不能move。
Locking
lock 锁定mutex,如果mutex不可达,则block
try_lock 尝试锁定mutex,如果mutex不可达,则返回
unlock 解锁mutex
std::thread
thread(); 创建新的线程对象,但是并不代表一个线程thread(thread&& other); Move constructor.
std::thread::join 阻塞当前线程,知道被 *this 识别的线程结束它的执行。
std::thread::detach 将线程执行与线程对象隔离,允许无依赖地继续执行。当现成退出,任何获取的资源都会被释放。
当调用完detach,*this就不再属于任何线程了。
std:lock_guard
在<mutex>中定义。类lock_guard是一个mutex wrapper,提供了一个方便的RAII-style机制,用来在scoped block的持续时间拥有一个mutex。当一个lock_guard对象被创建后,它尝试去获得给定的mutex的所有权。当控制离开lock_guard对象被创建所在的范围,lock_guard对象就被销毁,并且mutex被释放。
相关文章推荐
- C/C++学习笔记:基础知识11
- 【C++ 学习笔记小程序03】 整型及其相关知识
- opengl相关知识的学习11-10-25
- 介绍有关学习C++ STL的预备知识和STL的相关背景知识,适合想对STL做大致了解的初学者
- 【C++ 学习笔记小程序03】 整型及其相关知识
- android成长日记 11.详细学习了数据存储相关基础知识
- 学习 Message(11): 测试 TWMMouse 结构相关的鼠标消息
- [C++学习]基本知识(1)
- C++学习(3)--基础知识(3)--关于操作符的重载
- (转载)C++从零开始(十一)中篇 --类的相关知识
- 学习BMP相关知识的笔记
- 开始学习asp.net需要学习什么相关的知识??
- (转载)C++从零开始(十一)下篇 类的相关知识
- 09-11-11:ANSI C/C++方面的知识
- C++ 基础小知识学习[1]
- C/C++ 基础知识学习笔记 (不断更新中)
- 开始学习.net和php相关知识。
- C++学习笔记——基础知识
- (转载)C++从零开始(十一)上篇 --类的相关知识
- C++学习基础知识