单线程多线程系统效率差别

单线程和多线程

单线程和多线程有什么区别呢?有人说过比较形象生动的比喻,单线程就像你在地铁站刷卡,突然电话来了,你只能先打卡后接电话或者先接电话后打卡,同一时间只能选择做一样事情,而且要等它做完了才能继续下一件,多线程就像你在地铁站打卡,突然电话来了,你可以接电话的同时顺便打卡,或者打卡的同时顺便接电话,不用等着电话结束才能打卡,或者不用等着打卡结束了才能接电话,两样及以上的事情可以一并处理。

从整体看起来,多线程当然比单线程效率高多了,但是执行单个任务时,单线程是集中所有资源来执行任务,而多线程是兼顾多个任务,实际上你所执行的任务一般都是多个的,还是多线程更有效率。像电脑上又在登录QQ又在登录微信,还开着网页,打开视频,文件夹,等等,如果不是多线程早就崩溃了,得一个一个来,一个时间只能执行一个任务,打开微信了,得等微信用完了,关闭了,再打开下一个任务才能执行,这样单线程的话,完全无法满足如今的多任务的需求的。他一台电脑可以打开word写文档,浏览器浏览网页,QQ客户端,计算器,PDF阅读器,等等,都能运行,而你的单线程呢,一时之间只能运行一个软件,那个效率就相差太远了,进一步,效率之差就是生命长度之差。

华罗庚有篇关于烧开水泡茶喝的统筹方法,那个统筹方法用于比较机械的任务时比较有用,不能生搬硬套,以前有人说过,想吃鸡蛋,于是在煮鸡蛋的同时写作业,然后鸡蛋熟了,作业也做了一点了,但是这样会很影响注意力的集中,在煮鸡蛋的时候写作业,你在写作业的同时心里是挂念着煮鸡蛋的,担心会不会煮过头了,水煮干了可能还有危险,这时候貌似就不适合运看起来比较节省时间的统筹方法了。相反,等待鸡蛋煮熟了,关火了,再去做作业,看起来在煮鸡蛋的十分钟时间里没有做作业,但是即便做作业,那十分钟很可能也是十分低效的,等把鸡蛋煮熟了再去做作业,就可以心无旁骛,效率高多了。在烧开水泡茶喝的时候,先洗水壶装水烧水,在等水开的时候洗茶杯找茶叶,等水开了就可以泡茶喝了。这个方法是最优的,可以看出,如果这样做,你的大脑就相当于是个多线程操作系统,在烧水的同时做其他能做的事儿,而不是必须要等水烧开了,然后才能找茶叶,茶叶找好了,才能洗茶杯,必须一个任务从头到尾做完了才能继续下一个任务,这样单位时间内只能执行一个单一的任务,那说明就是单线程操作系统。

有的事情比较复杂,需要长时间坚持努力才能解决,那么可能就不适合在做那件事情的同时去做其他的事情了,但是多线程也并不是说同一时间处理所有事件,而是有些比较轻松的任务可以挂在那,进程挂在那,有资源有空了继续进行,而不是直接把它关闭了,等需要执行的时候再重新打开执行,那样就慢多了,明明已经有进度的,何必关了重新来过呢,除非出了问题不得已这样做。

《十万个为什么》,小时候有这么一套书,纸质不咋的,内容都是些为什么,可是现在来看,那个时候觉得十万个为什么好多,现在觉得,十万个为什么算什么啊,这个世界岂止十万个为什么啊?简直可以有万万个为什么,亿亿个为什么,根本不可计数个为什么。远了多了,可以说没有什么意义了,像有些问题,如果几十年,一百年不能解决的,那对于个人来说就没有什么意义了。那些能在预期期限内解决的问题对于个人才有意义,几年,十几年,几十年,太久远了,像什么温室效应,环境保护,空气污染等等,对于个人来说没有多大的意义,那些都是百年之后的事情,不论温室效应是真假,只是以这类问题代表举个例子。

不过那《十万个为什么》,就读过几页就没读了,初中高中买了些名著,也没读多少,还有工作后买了些书,也没有读多少,绝大多数都没有读过,哎。所以,的确是个懒惰的人啊。模拟器安装好了,下了个绝地求生·刺激战场,微信扫描二维码登录,却说不能注册了,建议玩用移动设备玩,这就没意思了。模拟器玩有模拟器的玩法,手机玩有手机的玩法,端游有端游的玩法,玩法各不相同,各有各的乐趣,想用什么玩就用什么玩,更有意思些。

很多人觉得玩游戏是浪费时间,其实几乎所有人也多多少少玩过游戏,只是大多数的人玩了就玩了,没有什么积累,其实游戏里也可以学到东西,只是简单地玩玩就没有什么意义。玩游戏就像追剧,看武侠小说,闲聊,其实有什么差别呢,回头看,大多数时光是比较闲杂的,清闲的,没有什么特别的积累。而游戏,那些玩得特别好的,有做游戏的,拍电视剧的,总有些常人没有的收获,能赚到很多钱,也不是一无是处,相反,若是人的操作系统低级,随便做什么可能也是没有什么意义的。就像几乎所有人都从小就在上学,但不是人人都能在这条路上走得更远,即便上还是相当多的人都没有走得多远,但是不能说上学就没有意义。其实,人不一样,走到哪里,貌似都能耐心积累,过得不错。

你可能感兴趣的:(单线程多线程系统效率差别)