首页 / C++ / c++11多线程笔记
c++11多线程笔记
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++11多线程笔记,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2056字,纯文字阅读大概需要3分钟。
内容图文
![c++11多线程笔记](/upload/InfoBanner/zyjiaocheng/830/1d276edd4f7e407591de04e576dba76f.jpg)
1 thread类
thread f;
线程等待join()
线程分离detach()
thread类不可拷贝复制
std::this_thread::yield();
2 bind 与lambda表达式
3 move
void some_function();
void some_other_function();
std::thread t1(some_function); // 1
std::thread t2=std::move(t1); // 2
t1=std::thread(some_other_function); // 3
std::thread t3; // 4
t3=std::move(t2); // 5
t1=std::move(t3); // 6 由于t1 已经与一个线程相关联, 赋值操作将使程序崩溃 。 必须显式地等待线程完成或者分离它
4 mutex
用法
std::mutex some_mutex;
some_mutex.lock()
some_mutex.unlock()
策略 tag type 描述
(默认) 无 请求锁,阻塞当前线程直到成功获得锁。
std::defer_lock std::defer_lock_t 不请求锁。
std::try_to_lock std::try_to_lock_t 尝试请求锁,但不阻塞线程,锁不可用时也会立即返回。
std::adopt_lock std::adopt_lock_t 假定当前线程已经获得互斥对象的所有权,所以不再请求锁。
策略 std::lock_guard std::unique_lock std::shared_lock
(默认) √ √ √(共享)
std::defer_lock × √ √
std::try_to_lock × √ √
std::adopt_lock √ √ √
//unique_lock 可防止死锁
std::mutex mt1, mt2;
// thread 1
{
std::unique_lock<std::mutex> lck1(mt1, std::defer_lock);
std::unique_lock<std::mutex> lck2(mt2, std::defer_lock);
std::lock(lck1, lck2);
// do something
}
// thread 2
{
std::unique_lock<std::mutex> lck1(mt1, std::defer_lock);
std::unique_lock<std::mutex> lck2(mt2, std::defer_lock);
std::lock(lck2, lck1);
// do something
}
配合std::condition_variable, 在wait时释放锁
//lock_guard 自动析构
std::lock_guard<std::mutex> guard(some_mutex);
5 atomic
内存模型
memory_order_release,memory_order_relaxed,memory_order_consume,memory_order_acquire,memoyr_order_acq_rel,memory_order_seq_cst(默认)
std::atomic_flag f = ATOMIC_FLAG_INIT; // 不能拷贝构造
std::atomic<bool> b(true); // 可以使用一个非原子类型赋值, 但不能拷贝构造
6
std::thread::hardware_concurrency()
std::async()
7 mutable
const 成员函数不能修改 类的成员 , 用mubable修饰之后可更改
内容总结
以上是互联网集市为您收集整理的c++11多线程笔记全部内容,希望文章能够帮你解决c++11多线程笔记所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。