永发信息网

多线程一定具有比单线程更高的并发性吗?为什么?

答案:1  悬赏:30  手机版
解决时间 2021-02-04 00:35
多线程一定具有比单线程更高的并发性吗?为什么?
最佳答案
单线程的也就是程序执行时,所跑的程序路径(处理的东西)是连续顺序下来的,必须前面的处理好,后面的彩绘执行到。
多线程嘛,举个例子也就是说程序可以同时执行2个以上相同类似的操作,比如一些搜索代理或者群发email的多线程软件,由于操作一次需要网络的返回信息 花的时间比较长,而对cpu来说却是空闲的,如果是一个一个顺序执行,那么搜索几千个IP就会花上好久好久。 而如果用多线程就可以在等待期间 加入其他的搜索,然后等待,这样可以提高效率。不过多线程和多进程公用一些资源时要考虑的问题好像也是一样的,,对于一些公共资源或者公共变量的访问和修改时要注意特别的,需要一些锁定什么的,还有顺序问题的考虑。
多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU而只和I/O,OEMBIOS等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。每个程序执行时都会产生一个进程,而每一个进程至少要有一个主线程。这个线程其实是进程执行的一条线索,除了主线程外你还可以给进程增加其它的线程,也即增加其它的执行线索,由此在某种程度上可以看成是给一个应用程序增加了多任务功能。当程序运行后,您可以根据各种条件挂起或运行这些线程,尤其在多CPU的环境中,这些线程是并发运行的。多线程就是在一个进程内有多个线程。从而使一个应用程序有了多任务的功能。多进程技术也可以实现这一点,但是创建进程的高消耗(每个进程都有独立的数据和代码空间),进程之间通信的不方便(消息机制),进程切换的时间太长,这些导致了多线程的提出,对于单CPU来说(没有开启超线程),在同一时间只能执行一个线程,所以如果想实现多任务,那么就只能每个进程或线程获得一个时间片,在某个时间片内,只能一个线程执行,然后按照某种策略换其他线程执行。由于时间片很短,这样给用户的感觉是同时有好多线程在执行。但是线程切换是有代价的,因此如果采用多进程,那么就需要将线程所隶属的该进程所需要的内存进行切换,这时间代价是很多的。而线程切换代价就很少,线程是可以共享内存的。所以采用多线程在切换上花费的比多进程少得多。但是,线程切换还是需要时间消耗的,所以采用一个拥有两个线程的进程执行所需要的时间比一个线程的进程执行两次所需要的时间要多一些。即采用多线程不会提高程序的执行速度,反而会降低速度,但是对于用户来说,可以减少用户的响应时间。上述结果只是针对单CPU,如果对于多CPU或者CPU采用超线程技术的话,采用多线程技术还是会提高程序的执行速度的。因为单线程只会映射到一个CPU上,而多线程会映射到多个CPU上,超线程技术本质是多线程硬件化,所以也会加快程序的执行速度。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
华为荣誉6相册里面的图片怎么进行移动。
某钢筋混凝土框架钜形柱,层高6m,板厚120mm,设
定广在什么地方啊,我要过去处理事情
什么抹脸油好
想自学3dmax和ae怎么学把软件能快学完?
如果给下图鉴真塑像作文字注解,应该选择A.
酉戌相害
百度应用挖财记账怎么没了,太不负责了,记了
大林房产六里村店在哪里啊,我有事要去这个地
救助狗狗的救助站在哪?
读下面甲城的地理位置图(左图)和甲城的城市
我是疤痕体质刚刚做完脂肪瘤切除手术吃什么好
大神们,我这主机(海尔轰天雷X7-s367ia)可
悦鮨怎么样
火车票查询12306武昌到石家庄t1461月28号21:4
推荐资讯
大塝岭在什么地方啊,我要过去处理事情
成都市(彭州)外派劳务培训中心我想知道这个在
e家商务酒店在哪里啊,我有事要去这个地方
【斗地主四个王】请教一道概率的题4个人用两
慢性特发性血小板减少性紫癜合并贫血最适宜的
停车场(中山东路街道办事处南)地址在什么地方
北京b40门锁不会自动开
泰国姜黄素家有知道的没?效果怎么样?
推拿康复中心地址有知道的么?有点事想过去
单选题It’s time for supper,&nbs
壹元堂上廓店地址有知道的么?有点事想过去
二次结构钢筋拉拔试验值多少为合格
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?