当前位置: 技术问答>java相关
P2 350的cpu,最大限度支持多少线程?
来源: 互联网 发布时间:2014-12-26
本文导语: 写了一段程序,用于网络通信,我想知道我的机器在不影响效率的情况下 最多支持多少线程,如果线程数是20,是否以为效率提高将近20倍? | 我觉得在本地机和带宽负载允许的情况下,使用多线程...
写了一段程序,用于网络通信,我想知道我的机器在不影响效率的情况下
最多支持多少线程,如果线程数是20,是否以为效率提高将近20倍?
最多支持多少线程,如果线程数是20,是否以为效率提高将近20倍?
|
我觉得在本地机和带宽负载允许的情况下,使用多线程确实能够成倍地提高效率,只是一个度的问题。
|
"如果线程数是20,是否以为效率提高将近20倍?"
非也非也。因为你只有一个CPU,所以某一时刻只有一个线程在工作。使用多线程的意思主要在于充分利用资源。比如说线程A在从硬盘读取数据,那么线程B就可以在这个时候利用CPU进行某些运算。如此而已。效率达不到20倍。
非也非也。因为你只有一个CPU,所以某一时刻只有一个线程在工作。使用多线程的意思主要在于充分利用资源。比如说线程A在从硬盘读取数据,那么线程B就可以在这个时候利用CPU进行某些运算。如此而已。效率达不到20倍。
|
带宽是固定的,如果带宽为10M,一个线程可以按此速度send/receive,那么用更多的线程来send/receive,带宽也不会增加。我认为server才需要多线程,以使server在处理请求时还可以向其他客户发数据。假设server处理每个request的优先级相同,client使用多线程只是增加了本机处理的机会,从整个网络的角度来考虑应该没有提高,而只是有点浪费。如果每个client都用很多thread,那server要同时保持那么多的连接,反而浪费了server的资源。我用netants下载pchome上的东西,使用一个连接和使用多个连接下载的总速度没有明显的区别,也许他限制了每个client使用的资源,而不是同等对待每个请求。
|
客户端多线程确可提高带宽利用率。NC浏览器是开4个,再多了也几乎不会有提高了。网络蚂蚁的默认值是6个。而线程太多(如几十)不仅提高不了带宽利用率,反因线程切换占了他多时间,会降低CPU的效率。你可在程序中由用户指定线程数。然后一一试验速度。建议4~6个。
|
我的看法是这样的:关于多线程提高带宽的利用率,我觉得原因可能是这样的。它所提高的并不是单纯的网络带宽的利用率,而是针对服务器而言。假如一个服务器最多可以实现10个线程(或进程),那么如果你用5个线程与它建立连接,你就占用了服务器时间片的1/2,这样,这个服务器程序有一半的时间为你服务,另一半的时间为其他的连接服务。对于Client to Server来说,多线程应该是抢占Server服务资源的好办法,但是对于Client to Client来说就没有什么太大意义了。
其实基本思想跟masterz的意思是一样的,只是阐述的角度不同。请指教。 ;)
关于线程多少问题,线程的多少只受内存大小的影响。至于性能嘛,就不知道了。有经验的高手请多多指教。
其实基本思想跟masterz的意思是一样的,只是阐述的角度不同。请指教。 ;)
关于线程多少问题,线程的多少只受内存大小的影响。至于性能嘛,就不知道了。有经验的高手请多多指教。
|
my cpu c500 memory 128M
I test my computer can run 5000-7000 threads.
but it run very slow.
I test my computer can run 5000-7000 threads.
but it run very slow.