为什么多线程下载一般开5-10个线程,就不能是50,100个

xlb2000 2002-05-28 09:54:54
据说5-10个线程是合理的,但为什么呢,靠经验吗
...全文
615 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zb_china 2002-05-29
  • 打赏
  • 举报
回复
笨!用蚂蚁下载同一个服务器的多个文件,通过调整同时任务数和每个任务的蚂蚁数观察总的流量就可以看出来了,一般5个蚂蚁就能达到最大速度了,更过的蚂蚁不会使总的速度提升(当然这是我的网络的情况,DDN128K,多人共享)。
xxjmz_78 2002-05-28
  • 打赏
  • 举报
回复
现在多数网站都支持多线程下载,但是有些网站为了提供给更多的带宽给新下载的用户,防止某个IP在下载的时候占用太多的带宽,会有意地中断部分连接,以控制流量.
正所谓“欲速则不达”,如果盲目地增加进程的数量,会给自己的计算机和服务器带来巨大的CPU处理时间和内存的开销,就会造成服务器崩溃,完全无法响应任何请求,自然也就无法下载了。即使没有崩溃,过多的进程也会使服务器花费许多不必要的资源在进程之间的管理和协调上,每个进程发送数据的实际效率反而下降。
现在,使用ADSL、专线和宽带网等高速接入的人也越来越多,那么,这些用户是不是也应该以完全使用带宽为标准来调节下载的进程数呢?答案也是否定的。
第一,要考虑服务器的负载能力,如果把服务器“拖”垮了,大家都没得下,相信“吃快弄破碗”的道理不难理解。
第二,通常一条高速接入的线路是供一个局域网或一个小区(特别是宽带网)使用的,在没有使用带宽限制的情况下,带宽是由各用户共享的,如果大家都使用多进程来抢占带宽就只会恶性循环造成代理服务器死机或网络阻塞。
第三,在高速的情况下,多进程下载会使硬盘在为每个进程记录数据时频繁换道,既大大增加了CPU占用,又严重降低了硬盘寿命。解决办法除了减少进程数量以外(一般5个进程已经足够),还可以增大内存缓冲的容量,在网络蚂蚁和网际快车里,通过“选项→参数设置→高级→自动保存任务每隔?KB”和“工具→选项→常规→把数据写入到磁盘每当接收到?KB”都可以很轻松地调节,根据机器配置和网络速度选择即可。
ajiefudan 2002-05-28
  • 打赏
  • 举报
回复
一般是从服务器方考虑,服务器会对这方面做限制,你客户端并没有限制,但是只要服务器不给你用,你多开了也白费阿
xlb2000 2002-05-28
  • 打赏
  • 举报
回复
谢谢,但我很想知道线程的任务切换到底消耗多少,"CPU的个数的两倍再加二",
岂不是我们一般的机子都只有4个,这个经验公式又从何得来的呢。
还想继续知道。
Winuxava 2002-05-28
  • 打赏
  • 举报
回复
DLExpert 好像就是可以开 100 个。但是这样的东西很多情况下不见得就比开5个线程快,而且非常浪费服务器的资源,所以很多地方都禁止使用。
EaStar1110 2002-05-28
  • 打赏
  • 举报
回复
其实有这么一个经验公式,一个进程所拥有的线程个数合理的是:CPU的个数的两倍再加二,没有理由说你不可以产生更多的线程,但是线程也是要占用资源的,而且10个线程和100个线程比起来,不见得速度就可以快,搞不好因为线程间的任务切换,速度还会要慢一些的
xlb2000 2002-05-28
  • 打赏
  • 举报
回复
为什么线程数会定在5左右,而不上一个数量级如15,25呢,
都知道多开没好处,但定量的分析大概是多少呢
xlb2000 2002-05-28
  • 打赏
  • 举报
回复
还有问题,正对每一个连接,服务器开的是进程还是线程,如果是线程不应该
会被轻易拖垮。客户端是多线程下载,同一进程的地址空间是共享的,会存在
数据时频繁换道吗?
咱是初学,问些愚问题请不要见怪啊。
chenyiwei 2002-05-28
  • 打赏
  • 举报
回复
开多线程的目的是为了提高速度,如果开了那么多线程不能带来更快的速度,又有什么意义?
huimayi 2002-05-28
  • 打赏
  • 举报
回复
统一
不解 2002-05-28
  • 打赏
  • 举报
回复
uip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台发的技术细节和最佳实践,逐步培养起自己的项目发和问题解决能力。此外,在求职或创业过程中,具备跨平台发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧