5·2读《人生元编程》
2016-05-02 本文已影响6人
huangdan
5·2读《人生元编程》
今天聊一聊电脑和人脑的并发问题。最早的时候一个CPU只能同时运行一个任务,这简直让人无法忍受。
第二个出场的是分时系统。分时系统是一种协作模式,每个程序运行一小段时间都得主动把CPU让出来给其他程序,这样每个程序都有机会用到CPU一小段时间。
第三个隆重登场的是多任务系统。程序员们让操作系统接管了所有的硬件资源,变得更加高级智能,系统进程开始分级,有的是特权级别,有的是平民级别
以上都是单核单CPU的情况,但无论线程间的切换多么快,这些都是并发,而不是并行。
中间插播一段并发和并行的区别。如果一个系统支持两个或多个动作(Action)同时存在,那就是一个并发系统。如果一个系统支持两个或多个动作同时执行,那就是一个并行系统。也就是说,单个CPU永远无法同时执行两个或以上的任务,但是允许任务同时存在。所以,只有多核或多个CPU才可能发生并行,如果单核单CPU只能发生并发行为。
人脑就比较惨了,在电脑突飞猛进的这几十年里,几乎没有任何进展,脑袋仍然只有一个,也没有裂变出多核……
但是,当我们在健身房跑步时听英语,写文章或编码的时候听歌(所有不让听音乐编程的公司都将死于心碎),坐地铁的时候阅读,步行的时候思考,这就变得非常有意义。因为我们在一个相对宽松的环境下把复杂的逻辑任务和简单的机械任务结合在一起,既不影响A,也不会干扰B,这种情况是我们优先要采取的并发策略。
。在复杂任务并发处理的时候,人脑往往会高估自己的处理能力,以为可以,其实任务的并行、上下文的切换、注意力的分散,都会让你的效率大打折扣