多线程 - 其他标准库函数
大约 1 分钟
多线程 - 其他标准库函数
【总结】前面用到过的标准库函数
创建对象类
std::thread mythread(mythreadfn);
,创建线程类对象- 参数
- 入口函数
- 其他要传递给入口函数的变量
- 成员函数
- join()
- detach()
- joinable()
- 参数
std::mutex mymutex;
,创建互斥量对象std::lock_guard<std::mutex> sbguard(my_mutex);
,创建智能互斥量对象- 参数
- 互斥量对象
- std::adopt_lock,第二参数,标志不需要再lock
- 参数
std::unique_lock<std::mutex> sbguard(my_mutex);
,创建智能互斥量对象- 参数
- 互斥量对象
- std::adopt_lock,第二参数,标志不需要再lock
- std::try_to_lock,第二参数,尝试去lock(),若没有锁定成功则立即返回,而不会阻塞
- std::defer_lock,第二参数,初始化一个没有加锁的mutex
- 成员函数
- lock(),加锁,和互斥量用法一样
- unlock(),解锁,和互斥量用法一样
- try_lock(),尝试给互斥量加锁,如果拿不到锁则返回false,否则返回true。不阻塞
- release(),返回它管理的mutext对象指针,并释放所有权
- 参数
其他操作类
std::this_thread::get_id();
,获取线程idstd::call_once()
,保证某个函数只被调用一次std::ref()
,用于多线程中对象的引用传递std::move()
,用于多线程中智能指针的所有权转移休眠操作
std::chrono::milliseconds dura(2000); // 【20s】 std::this_thread::sleep_for(dura); // 【休息20s】