首页
社区
课程
招聘
[求助][求助]用Vtune分析,调用WaitForSingleObject和SetEvent很耗时!
发表于: 2011-10-18 18:39 8029

[求助][求助]用Vtune分析,调用WaitForSingleObject和SetEvent很耗时!

2011-10-18 18:39
8029
如题

我是做大量数据运算,根据CPU核心进行线程拆分,
最后用Vtune分析:
发现WaitForSingleObject和SetEvent很耗时,加起来占用10%左右的总量
这是为什么?有办法解决吗?

拆分模型:
一张图片过来,进行处理,根据CPU,分成N个线程,每个线程处理一部分,
1.主线程过来,分别把所有Event设置信号(SetEvent这里显示耗时多)用来触发工作线程
2.主线程进入等待,等工作线程处理完数据再继续执行(用WaitForMultipleObjects,耗时很多)
3.工作线程自己处理处理完成,将Event设置掉,自己进入WaitForSingleObject(耗时很多)等待,下次再被主线程Event信号触发

如果此循环

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 224
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
什么情况,我的线程管理模块可是频繁使用这两个函数啊,别呼我
2011-10-19 08:39
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
用内核对象同步,确实很耗时,你去看windows核心编程,上面有详细比较同步的各种方法的性能~
2011-10-19 09:14
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
算法问题吧。
2011-10-19 09:39
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
vtune显示时间耗在这几个函数上面,关算法什么事?
2011-10-19 10:17
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
那多线程是否有更好的办法?
2011-10-19 10:25
0
雪    币: 522
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
多线程计算有快有慢 要同步肯定要花费时间
算法的好坏决定着所花在线程同步时间上的多少  和同步函数费时有什么关系?     

真的不大懂 可能是小弟比较菜吧  
2011-10-23 18:10
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
关键段,类似的,不是用内核对象同步的,效率都会高一些~
2011-10-25 16:51
0
雪    币: 174
活跃值: (620)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
关键段?你是想说临界区吗?
临界区不适合多线程的控制,我要随时让线程运行,暂停等
2011-11-10 17:20
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
我这里讲,估计不清晰,建议你还是去看看windows核心编程,里面有好几个节,就是讲解同步和比较这些方法的,你看完,就知道了。
2011-11-13 09:12
0
游客
登录 | 注册 方可回帖
返回
//