首页 新闻 会员 周边

多线程应用开多少个线程比较合适

0
悬赏园豆:80 [已解决问题] 解决于 2015-03-28 14:39

认为本问题傻逼的高人请勿回答,以免引起不快。


假设硬件线程是N(就是从任务管理器中查看CPU分N块),一个多线程应用开多少线程比较合适

另外计算密集型的线程和阻塞时间较长的I/O型线程是否有所不同,各自开多少比较合适?

初略的用以下公式计算如何?

((线程等待时间+线程cpu时间)/线程cpu时间) * N

 对于计算密集型线程,线程等待时间接近0

会长的主页 会长 | 专家六级 | 园豆:12401
提问于:2015-03-26 22:22
< >
分享
最佳答案
0

我个人觉得在使用多线程的时候要注意几个点,1.执行这个处理的时间多长,2.执行这类任务的消息有多频繁

我一般的处理,

1.如果执行是时间过长但任务很少,我会只用一个线程(这里是无限循环,直到你的进程退出),而且最好在线程池里面直接开一个出来,不要单独去new一个线程实例,好处的话就去看下线程池跟单个线程的知识;

2.如果是执行时间短,这里就忽略掉任务的多与少,直接每次都从线程池里取一个线程来执行,因为执行时间段很快就会释放资源,这样效率很高;

3.如果执行时间长而且任务量大,那就创建线程数组,个数上我一般使用当前服务器cpu的核数的2倍,这样不会太占用资源,这种单独new出来的线程,再不使用或者关闭的时候要特别注意回收

 

个人愚见,不知是否是你想要的

收获园豆:50
破晓幽灵 | 初学一级 |园豆:41 | 2015-03-28 10:55
其他回答(2)
0

一般的多线程应用,看多少取决于你业务的需要吧,不要N*x(x不要太大就好)。

对于计算密集型,那么直接N就ok了。

BTW:现在不是有线程池的概念吗,直接用这玩意。

收获园豆:10
幻天芒 | 园豆:37175 (高人七级) | 2015-03-27 09:16
0

这个不是写在配置文件里的嘛,让用户自已去选择,你给一个默认值就行了。

收获园豆:10
angelshelter | 园豆:9887 (大侠五级) | 2015-03-27 10:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册