总第35篇
本文主要梳理C++11/14标准库中对语言级线程支持的扩充,以便大家在学习和工作过程中能快速参考。
1.std::thread
std::thread
用于创建一个可执行的线程实例,因此,它是一切并发编程的基础,使用时需要包含头文件,它提供了很多基本的线程操作,例如get_id()
可获取所创建线程的ID,join()
用来加入一个线程等。
下面是一个使用的简单例子:
#include <iostream>
#include <thread>
void foo() {
std::cout << "hello world" << std::endl;
}
int main() {
std::thread t(foo);
t.join();
return 0;
}
2.std::mutex
和std::unique_lock
C++11中,引入了mutex
相关的类,其所有相关的函数都放在<mutex>
头文件中。std::mutex
是C++11中最基本的mutex
类,通过实例化std::mutex
可以创建互斥量,通过成员函数lock()
、unlock()
可对其上锁解锁。