【CPU单核-多核】所谓的<程序的多线程优化>?
gpu吧
全部回复
仅看楼主
level 12
pengzhenxx 楼主
不卖关子,直接上结论吧。。。
现在几乎找不到单纯的单线程程序了,现在的程序(Windows),除非功能及其简单的程序,几乎全部会创建2个或以上的线程,甚至创建几十上百个线程。楼主用Windows API 查询了下进程,如下图:


随便一个程序的进程,创建的线程数都是惊人的多
2017年04月04日 06点04分 1
level 12
pengzhenxx 楼主
GPU吧毕竟讨论的硬件,所以还得回到正题:

软件创建了如此多的线程,而我的CPU只有双核或四核,岂不是浪费?
这么多线程,而CPU只有几个线程,多的线程占用了同一个CPU的时间,不能并行执行,当然不会提高程序的执行性能,所以你只有双核双线程的CPU,就算程序创建100个线程,也是然并卵的。

当然开发人员用这么多线程,并不单纯是为了提高性的,多线程的一个及其重要的作用:防止线程阻塞!

为了说明问题,楼主写了个简单的查找文件的小程序,先来个单线程的:
如下图:通过API查询为单线程
2017年04月04日 07点04分 2
level 12
pengzhenxx 楼主
单纯的单线程程序,很容易发生线程阻塞,导致软件崩溃:


就像这样,所以现在的软件都必须做成多线程优化的,才具有实际使用价值
2017年04月04日 07点04分 3
level 12
pengzhenxx 楼主
下面是做成3个线程后,2个线程由于实际工作,1个线程用于响应用户操作:
软件实用性立马好很多


通过API查询为3个线程:

2017年04月04日 07点04分 4
这里用2个线程查找文件,所以是很快的,楼主6个硬盘,9个分区,近35万个文件,也只用了4秒多就,遍历了所有的dll文件,如果之查找特定文件,只会有0.几秒查找万所有磁盘
2017年04月04日 07点04分
level 12
pengzhenxx 楼主
总结一下:
1、现实情况是,99%的软件都是多线程优化的,真正的单线程程序少的可怜。

2、程序进行多线程优化,并不一定就是为了单纯提高性能的,还有可能是解决线程阻塞的,所以有时候有的软件创建几十上百个线程。

3、其实程序多线程优化很好做的,楼主以前也以为多线程优化不好做,那是站在算法角度看,算法用多线程确实不好优化。但功能上进行多线程优化,是很容易的。

4、多线程优化的程序,也不一定就在多核CPU上有更好的性能表现,这些线程,并不一定实在并行同步执行同一个任务,所以多线程优化的程序不一定就会有更好的性能。关键还的看开发人员是怎么写的。
2017年04月04日 07点04分 5
level 12
pengzhenxx 楼主
好久没来了,吧主呢?[阴险]
@crayon嘻哈小新
2017年04月04日 07点04分 6
吧主对游戏机感兴趣[阴险]
2017年04月05日 08点04分
level 14
所以用了多线程的程序并不一定有很好的并发能力,还是要看实测咯?
2017年04月04日 09点04分 7
当然啊。。要看开发人员用这些线程做了什么。现在随便一个程序都是多线程优化的,单线程很容易崩溃
2017年04月04日 09点04分
level 13
[笑眼][真棒]
2017年04月04日 09点04分 9
level 12
算法多线程优化难,功能多线程优化易,总结得不错。多线程做一件事情难,做多件事情容易,多new一些线程就行。
这让我想起当初炮神的gpuflops,开始cpu烤机的ui刷新在主线程,导致烤机的时候ui响应迟钝、卡,ui刷新的时候烤机会stall。后来炮神接受别人的意见,ui刷新开辟一个新线程,就不卡了。
2017年04月05日 00点04分 10
做软件设计,多线程是必须要用的,手机/PC都一样
2017年04月06日 00点04分
ui刷新是主线程。。应该是把烤鸡任务挂到新线程了 安卓不是只允许主线程动ui么
2017年04月09日 04点04分
@MebiuW😾 [滑稽]android编程我不懂啊,新开了个线程是肯定的,哪个在主线程没细问。android有这样的限制的话,你说的应该是对的。
2017年04月09日 04点04分
level 1
楼主,你的意思是,同样功能的线程会被创建很多个,但是这些线程里可能只有一个在干活?如果那个唯一干活的线程阻塞了,用什么方法能唤醒闲置的线程来接盘呢?
2017年04月05日 17点04分 11
功能上进行多线程优化,当然就是不同的功能。。。同样的功能多线程优化,要做好线程同步,要不然运算结果是错的。。。
2017年04月06日 00点04分
@pengzhenxx 这样啊,阿里嘎多
2017年04月06日 03点04分
level 6
ios用instruments看就没有单线程的软件
2017年04月06日 01点04分 12
level 1
我自己写不服,还有坦克世界[怒][怒][怒]
2017年04月09日 03点04分 13
level 13
又对硬件重燃兴趣了?[吐舌]
2017年04月12日 17点04分 14
一直都对硬件感兴趣,不过现在重点是数据库,Windows和单片机了
2017年04月13日 03点04分
[咦]
2017年06月25日 05点06分
level 12
pengzhenxx 楼主
单片机是我的玩具
2017年04月13日 03点04分 15
1 2 尾页