c++11 std::thread

c++11 std::thread

https://blog.csdn.net/zy19940906/article/details/53955684

https://blog.csdn.net/zy19940906/article/details/54412600

 


 以前虽然也用线程,但没完整试,这次算是各种试一下吧,效率上的测试一是不太好测,二是也时间上不太够,所以效率上的对比没有测试。本篇不提供代码,只是做了各方面诸如互斥量,条件变量的一些简单总结= =。

 测试环境:Qt5.7,vs2015。

一、std::thread:
 如下图所示:

(解释一般都是我自己的理解,所以如有错误,可以探讨)

 1、构造:只有move赋值和move构造函数了。这个就不需要多解释,一目了然,如果不懂move,请参考我另一篇: 传送门

 2、join:当前线程执行完这个区域后,阻塞,等待该子线程执行完之后,一起结束。

 3、detach:分离线程对象,允许独立执行,即this不再拥有它的权限,一旦该线程退出,该线程所占用的已分配资源将被释放。

一句话过渡:最大的问题就是要解决数据共享和并发操作问题——所以有以下几种机制:

 

二、互斥量与自解锁:
 这里将自解锁和互斥量放在一起,两者关联性很强,最主要的是,我作图的时候连着了,不好分开= =。
如下图所示:

 因为我列的图表很明确了,所以就不多解释,接着往下走。

一句话过渡:只有锁,但如果需要达成某个条件,如等待某个值多少时再处理,一直循环判断太占用cpu。

 

三、条件变量与future:
 这里参考了别人的文章: 传送门
如下图所示:

 这里算是先暂时从图中理解,有时间的话我再补充个更详细的。

 

四、原子操作机制:
 如下图所示

本次其实还有许多的东西可以说,只是做了个简单的图表,慢慢来,现在没有时间补充,总结完这些,其实理解上的话也比较简单,暂时就先这样,当做挖个坑吧= =。

 

================= End

 

posted @   lsgxeva  阅读(287)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2019-03-17 Kindle支持文档类型
点击右上角即可分享
微信分享提示