线程
线程使得程序能在数个处理器核心同时执行。
定义于头文件 <thread>
thread 管理单独的线程
原型
class thread;
c++中的线程,相对比较安全
创建一个线程
- 要定义一个函数
- 创建一个线程对象,将函数作为参数转递
- 等待线程的结束
管理当前线程的函数 | |
---|---|
定义于命名空间 this_thread | |
yield() | 建议实现重新调度各执行线程 (函数) |
get_id() | 返回当前线程的线程 id (函数) |
线程常用函数
观察类函数
bool joinable(); //检查线程是否可合并,即潜在地运行于平行环境中
int get_id(); //返回线程的 id
操作函数
void join(); //等待线程结束运行
void detach(); //容许线程从线程句柄独立开来执行
void swap(); //交换二个 thread 对象
互斥锁
定义于头文件
class mutex;
mutex
类是能用于保护共享数据免受从多个线程同时访问的同步语句。
mutex
提供排他性非递归所有权语义:
- 调用方线程从它成功调用
lock
开始,就会一直占用,直到调用unlock
解锁 - 线程占有
mutex
时,所有其他线程若试图要求mutex
的所有权,则将阻塞 - 如果用try_lock 就会返回
false
void lock(); //锁定互斥,若互斥不可用则阻塞
bool try_lock(); //尝试锁定互斥,若互斥不可用则返回
void unlock(); //解锁互斥
互斥锁
class unique_lock;
mutex
不能直接使用