随笔分类 -  多线程

摘要:包含头文件#include <thread> 介绍: thread类代表每个线程的执行。线程的执行时一系列能够同时执行的指令在相同的共享空间中同时执行。 初始化一个thread对象,代表着一个线程开始执行。这是它可以joinable,并且有一个唯一的线程ID。 一个没有被初始化(使用默认构造函数时) 阅读全文
posted @ 2016-11-28 00:31 郭志凯 阅读(2521) 评论(0) 推荐(0)
摘要:死锁 解决死锁方法1:使mutex顺序相同 解决死锁方法2:使用std::lock 阅读全文
posted @ 2016-11-27 05:27 郭志凯 阅读(323) 评论(0) 推荐(0)
摘要:首先纠正以前的错误:在没有调用join()之前,线程已经运行了。 下面还是把join加上,目前这个程序输出很乱 使用基本的互斥锁,解决资源竞争,看到输出不在凌乱 改进:自动释放mu 继续优化:去掉上一个程序的缺点 阅读全文
posted @ 2016-11-27 04:43 郭志凯 阅读(326) 评论(0) 推荐(0)
摘要:下面使用类来初始化线程 上面例子也可以稍作修改 Factor fac ; std::thread t(fac); 替换为 std::thread t((Factor())); 完整如下: 下面介绍如何传入参数 性能优化:传入引用 在MSVC2013中,也可以使用std::move(),但是在GCC中 阅读全文
posted @ 2016-11-26 21:15 郭志凯 阅读(776) 评论(0) 推荐(0)
摘要:控制台没有显示任何字符,原因:使用detach开启子线程没有阻塞主线程,主线程已经执行完毕。 结论:detach后,不能再使用join 结论:可以使用joinable()判断是否可以join() 阅读全文
posted @ 2016-11-26 20:11 郭志凯 阅读(712) 评论(0) 推荐(0)