性能特性测试系列3——QT线程与std::thread(上)之std::thread
2016-12-31 14:56
246 查看
序
一stdthread
二互斥量与自解锁
三条件变量与future
四原子操作机制
测试完容器和function之后,立马开始测和总结qt线程和std::thread相关特性,之后可能会继续网络库的测试,如qt的tcp,udp和c++的tcp,udp的一些比较,至于为啥是比较qt和c++之间,我也不知道= =。
测试环境:Qt5.7,vs2015。
(解释一般都是我自己的理解,所以如有错误,可以探讨)
1、构造:只有move赋值和move构造函数了。这个就不需要多解释,一目了然,如果不懂move,请参考我另一篇: 传送门
2、join:当前线程执行完这个区域后,阻塞,等待该子线程执行完之后,一起结束。
3、detach:分离线程对象,允许独立执行,即this不再拥有它的权限,一旦该线程退出,该线程所占用的已分配资源将被释放。
一句话过渡:最大的问题就是要解决数据共享和并发操作问题——所以有以下几种机制:
如下图所示:
因为我列的图表很明确了,所以就不多解释,接着往下走。
一句话过渡:只有锁,但如果需要达成某个条件,如等待某个值多少时再处理,一直循环判断太占用cpu。
如下图所示:
这里算是先暂时从图中理解,有时间的话我再补充个更详细的。
参考资料:传送门
本次其实还有许多的东西可以说,只是做了个简单的图表,慢慢来,现在没有时间补充,总结完这些,其实理解上的话也比较简单,暂时就先这样,当做挖个坑吧= =。
ps:如果本文中图看不清,保存到电脑放大就行。
一stdthread
二互斥量与自解锁
三条件变量与future
四原子操作机制
测试完容器和function之后,立马开始测和总结qt线程和std::thread相关特性,之后可能会继续网络库的测试,如qt的tcp,udp和c++的tcp,udp的一些比较,至于为啥是比较qt和c++之间,我也不知道= =。
序
以前虽然也用线程,但没完整试,这次算是各种试一下吧,效率上的测试一是不太好测,二是也时间上不太够,所以效率上的对比没有测试。本篇不提供代码,只是做了各方面诸如互斥量,条件变量的一些简单总结= =。测试环境:Qt5.7,vs2015。
一、std::thread:
如下图所示:(解释一般都是我自己的理解,所以如有错误,可以探讨)
1、构造:只有move赋值和move构造函数了。这个就不需要多解释,一目了然,如果不懂move,请参考我另一篇: 传送门
2、join:当前线程执行完这个区域后,阻塞,等待该子线程执行完之后,一起结束。
3、detach:分离线程对象,允许独立执行,即this不再拥有它的权限,一旦该线程退出,该线程所占用的已分配资源将被释放。
一句话过渡:最大的问题就是要解决数据共享和并发操作问题——所以有以下几种机制:
二、互斥量与自解锁:
这里将自解锁和互斥量放在一起,两者关联性很强,最主要的是,我作图的时候连着了,不好分开= =。如下图所示:
因为我列的图表很明确了,所以就不多解释,接着往下走。
一句话过渡:只有锁,但如果需要达成某个条件,如等待某个值多少时再处理,一直循环判断太占用cpu。
三、条件变量与future:
这里参考了别人的文章: 传送门如下图所示:
这里算是先暂时从图中理解,有时间的话我再补充个更详细的。
四、原子操作机制:
如下图所示参考资料:传送门
本次其实还有许多的东西可以说,只是做了个简单的图表,慢慢来,现在没有时间补充,总结完这些,其实理解上的话也比较简单,暂时就先这样,当做挖个坑吧= =。
ps:如果本文中图看不清,保存到电脑放大就行。
相关文章推荐
- 性能特性测试系列4——QT线程与std::thread(下)之QThread
- 性能特性测试系列2——c++11 std::function和正常调用函数效率比较
- 性能特性测试系列1——STL容器,QT容器性能相关比较和总结
- mysql 优化系列(一) Mysql数据库引擎性能测试
- C#线程系列讲座(2):Thread类的应用
- Ajax性能测试工具-Firefox插件系列
- BizTalk开发系列(三十七) 性能监视器在BizTalk性能测试中的使用
- 51Testing作品系列:性能测试从零开始——LoadRunner入门
- 【插件式框架探索系列】使用多UI线程提升性能
- Java 7新特性及简单性能对比测试
- Loadrunner性能测试工具系列视频教学!(学测试的朋友请进!
- Java 7:最新特性、代码示例及性能测试
- MySQL5.1新特性翻译系列 - 通过分区(Partition)提升MySQL性能
- Java 7:最新特性、代码示例及性能测试
- 软件测试系列之(2)—性能测试过程和方法
- 使用性能测试工具JMeter系列2-运行JUnit Request测试Java API
- mysql 优化系列(一) Mysql数据库引擎性能测试
- [转]MySQL5.1新特性翻译系列 - 通过分区(Partition)提升MySQL性能
- 网店版重生系列:因为webwork.configuration.xml.reload遭遇Web应用性能测试瓶颈
- (转)C#线程系列讲座(2):Thread类的应用