关于多线程提高程序执行速率的问题
多线程可以提高,程序的执行速度。从宏观上讲好像是多个线程同时执行。但微观上,线程的执行都是要占用cpu的时间片的,也就是一个时间只能执行一项任务。为什么会提高执行速度呢?...
多线程可以提高,程序的执行速度。从宏观上讲好像是多个线程同时执行。但微观上,线程的执行都是要占用cpu的时间片的,也就是一个时间只能执行一项任务。为什么会提高执行速度呢?不是很明白
展开
4个回答
展开全部
多线程只有在多处理器系统(比如多核、smp等)上才有可能提高执行速率。在多处理系统上,将要执行的任务分割成多个可并行执行线程,就可以提高执行速率。但是如果任务本身不可并行,比如就是一个有限状态自动机的程序,那就没办法用到多处理机,也不能提高速率。上面说的是并行,不是并发。单处理器上多线程只能并发执行而不是并行,多线程并不能提高纯计算程序的速率。但是对于一般程序中都有i/o操作等,可以将io操作放到一个线程中执行,从而可以在io同时进行其他操作不比等待io完成,这样可以提高速率。不宜创建过多线程,因为线程context switch造成很大的cpu负荷,并且线程占用内存资源。现在的网络服务器为了支持大量并发多不是靠多线程或多进程,而采用其他的技术如异步i/o,i/o multiplexing
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
展开全部
我认为,多线程提高效率是有前提的。
如果只是让CPU执行计算,就像你说得,现在的微机都是分时处理,单线程和多线程的效率几乎一致,甚至单线程还要快一点,关于这个我是做过测试的。
多线程提高效率的情况是,比如需要等待IO或者用户响应的情况。
举个列子,一个ping的小程序。从网址192.168.1.1到192.168.1.255,循环ping,假设每个网址都ping不通,计算机等待3秒超时。
如果使用单线程,则需要255*3秒时间。如果使用C#线程池或者4.0的并行计算,则会节约10倍左右的时间。
如果只是让CPU执行计算,就像你说得,现在的微机都是分时处理,单线程和多线程的效率几乎一致,甚至单线程还要快一点,关于这个我是做过测试的。
多线程提高效率的情况是,比如需要等待IO或者用户响应的情况。
举个列子,一个ping的小程序。从网址192.168.1.1到192.168.1.255,循环ping,假设每个网址都ping不通,计算机等待3秒超时。
如果使用单线程,则需要255*3秒时间。如果使用C#线程池或者4.0的并行计算,则会节约10倍左右的时间。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果从运算效率上来说,多线程的优势必须要多核的CPU和64位的操作系统才能体现
但是从一些程序的流程上来说,多线程是非常必要的,比如一个WINFORM的程序不用多线程处理的话,当你程序在运算某种数法的时候,你的主窗体就处于一个假死状态
因为你的程序只有一个线程,它处理了运算过程,放弃窗体的显示这一块,而多线程则刚好解决了这个问题
但是从一些程序的流程上来说,多线程是非常必要的,比如一个WINFORM的程序不用多线程处理的话,当你程序在运算某种数法的时候,你的主窗体就处于一个假死状态
因为你的程序只有一个线程,它处理了运算过程,放弃窗体的显示这一块,而多线程则刚好解决了这个问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要更宏观的 来理解
现在你只是看到你这一个程序,如果有10个程序 ,你这个一个程序多开了一个线程就把原本其他程序使用cpu的时间抢了过来
原来你这个程序1分钟内只能占用cpu 10秒钟 线程多了以后1分钟内可以占用20秒了没准
现在你只是看到你这一个程序,如果有10个程序 ,你这个一个程序多开了一个线程就把原本其他程序使用cpu的时间抢了过来
原来你这个程序1分钟内只能占用cpu 10秒钟 线程多了以后1分钟内可以占用20秒了没准
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询