有什麼情况一定要, 只能是多线程编程才能解决? 给个具体的例子, 我初学多线程...

 我来答
百度网友66a8d48e5
2013-04-29 · TA获得超过7687个赞
知道大有可为答主
回答量:3002
采纳率:12%
帮助的人:3849万
展开全部
这是典型的对多线程不理解造成的,问题本身就存在问题。

多线程只是一种技术——所以没有所谓的必须,或是只能。

多线程有其自己的适用范围,我们只能说在哪种情况下适合使用多线程,但这种情况下绝对不会是只有多线程能解决。所以问题就言是多线程的典型应用场景,而非这么绝对的问一定要,只能是!不信换一种结构——比如阵列处理器,人家编程时就使用了阵列,与线程的概念就没有任何关系不了!

典型的使用场景其就是一个:充分利用IO资源。

比如说一个界面在工作时不停地接收输入信息(如键盘,mouse,网卡等)而界面或是程序对信息处理时间较长时,最好使用多线程,多线程的意义在于在CPU参于界面处理的同时,可以处理输入事件。如果单线程,你必须等待界面或是程序处理完成之后才可以处理输入事件,而多线程为了防止这种界面或是程序假死的现象(单线程在处理界面时不接受事件)。

再者如果程序在运行过程中,由于要长时间地硬盘进行读写,那么多线程也能很好地解决这一问题。

其实它的目的就是研究发现:单线程(进程)在CPU工作时可能造成其他IO资源(如磁盘IO)的空闲,而使用多线程则是合理利用IO资源,加快整个软件的运行。

事实上了,windows系统是一个多任务多进程的工作,每个进程之间利用的是CPU时间轮片法。而线程之间则利用的多资源的同步进行。

所以说,多线程本身只是提高了IO利用率,与长时间处理什么的其实也没有多大关系。比如windows服务并非线程,但每个windows服务是一个进程,为什么还都可以同时并发在系统中?这个原因就是CPU轮片。而多线程是基于进程所占cpu时间片内的IO资源充分利用。

另一个技术也是线程延伸,就是我们常说的CPU是四核八线,其实他只是将每个物理核心再虚拟一个线程CPU,只不过这个所谓的四核八线CPU仅仅只是提高了CPU的利用率而已。

笑一楼与二楼,还扯什么消息机制——这与系统与毛关系?都是大神啊!

其实在单核单线的CPU上,多线程除了增加线程开辟与回收等开销外,对于CPU并不占任何便宜。而多进程之间已经有CPU轮片法进行各进程的统筹了。
iaskall
2013-04-29 · TA获得超过630个赞
知道小有建树答主
回答量:568
采纳率:83%
帮助的人:232万
展开全部
如果说我们做一个实时通讯的工具,界面是一个线程,一直都必须运行,不能被占用(比如说通讯的线程),被占用的话就会出现界面停滞或者卡死现象,

这个时候而通讯线程需要时刻监视和处理来往通讯的信息,也是需要时刻运行的,这两个线程都必须是时刻运行的,所以你现在明白了,这了就需要多线程了对不?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
空雪梦见
2013-04-29 · TA获得超过5596个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1150万
展开全部
在双核或四核cpu上只通过一个进程就把cpu占用率吃到100%
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式