下载时的多线程和单线程
下载过程中用多线程是会提速的。
我们下载的速度实际就是实时抢占网络宽带的大小。实际上!!!
用户进程实时抢占的带宽 ≤实时网络可用带宽
那现在我们要做的就是无限接近实时网络可用带宽对吧?
可是!TCP有流量探测机制,一旦检测到有丢包就会减速!来个图!
很显然,指数级降速,线性增速,这很不公平!降速很快,但升速却很漫长!造成的直接恶果就是真实的传输速率远远小于实时可用带宽。 这没办法,为了避免网络拥塞对吧?这就有点牺牲小我成全大家的精神,我的减速是为了大家能用。
多线程相比单线程的优势是,由于有多个线程在竞争实时可用带宽。尽管多线程逻辑上是并行的,但其实还是按时序的串行处理。所以每个线程处于的阶段并不一致。 在任意时刻,有的线程处于丢包被罚1/2降速,有的线程处于2倍增速阶段(SlowStart),而有的线程处于线性增长阶段。通过多个线程的下载速率的加权平均,得到的是一根相对平滑的下载曲线。这条平滑曲线在大多数时候应该位于单线程下载速率的上方。这就是多线程下载速率更有优势的体现。!!! 但是,如果TCP流量探测机制更加智能,比如BBR算法。BBR算法最大的进步,就是摒弃传统TCP流量调度算法(基于是否丢包而升速或降速), BBR采取的是,实时测量网络最大的可用带宽,并将发送速率与之相匹配,一直在实时可用带宽附近小范围徘徊,避免大起大落的情况发生。测量速率能无限接近实时可用带宽,多线程相比单线程,优势就体现不出来了。
所以在是TCP是传统的拥塞算法的情况下,多线程还是有优势的。
企业大数据、海量文件高速传输系统
镭速大文件传输-企业大文件传输软件,文件传输工具,跨国快速传输大文件,企业大数据传输解决方案