如何让程序支持使用多个CPU核心(线程)同时运算?
vb.net吧
全部回复
仅看楼主
level 15
ZAFT的阴谋 楼主
我写了个批量运算的程序,一次运算1千万组数据,但是运算式子很简单,就是加减乘除的组合,使用了for-next循环控制需要运算数据的个数,将每次运算结果添加到listbox
但是问题来了,在运行时CPU占用率只有20%-30%,点开详情一看发现只有一个核心(线程)在工作,其他的都在滑水,我的CPU是4核心8线程的,只用1个线程处理1千万组数据耗时可想而知,所以程序在运算时长时间处于“无响应”状态,如图
CPU滑水图
请问大神这种情况应该如何优化?能不能让8个线程一起来处理?具体应该如何实现?谢谢了
2018年10月27日 09点10分 1
level 15
ZAFT的阴谋 楼主
补充一下,程序是在VS2017的调试模式里运行的
2018年10月27日 09点10分 2
level 9
2018年10月27日 17点10分 3
level 11
得先看看能不能将串行的代码改成并行,能改的话你可以用并行库parallel,用它就不会有摸鱼的CPU了[勉强]
2018年10月27日 21点10分 4
我是刚学vb.net的新手,之前也没学过别的语言,这个“串行代码改并行”具体要怎么做呢?(或者说这对于我这个功能和实现方式有没有可能改并行?)有没有什么文档或者教学可以参考的[乖]
2018年10月28日 02点10分
@ZAFT的阴谋 去msdn看文档啊,并行库parallel,多线程就看3楼给你的那个链接,还有task等的
2018年10月28日 17点10分
@闪星2 嗯,好的,不过楼上那个好像是c#的文档
2018年10月30日 00点10分
level 1
说句实话,我把程序从单线程改成多线程反而变慢了(测试出来的)。
2020年02月14日 13点02分 6
msdn有建议过,不要简单的把所有代码都改为多线程,得多分析分析对比对比,启动线程是有损耗的
2020年02月15日 16点02分
1