我们的大脑是单线程结构还是多线程结构?
2012-07-02 21:56
351 查看
我一直很佩服那些专业电子竞技运动员,也一直很喜欢China_TTTT,他们是如何能够兼顾正面战场的决战,同时到对方家里三线偷袭?这种多线程操作对于初学者来说简直就是噩梦,但是对于专业人员来说,它却和单线程操作是差不多的。
假设你现在有两个任务要完成,一是完成一个客户交给你的程序任务,二是为参加WCG而苦练dota, 先来看看你喜欢下面的哪一种工作方式:
1.今天我要把这个程序编出来,然后你从早到晚一直忙于编程,因为把精力集中于一件事情上是效率最高的方法,然后在第一天晚上你终于把客户的任务完成了。第二天又练习了一天dota, 然后顺利拿到WCG总冠军。
2. 编一天的程序太累了,我每完成程序的一个模块就练两局dota, 这样可以使得大脑的各个区域充分被利用,不至于让一个区域过度劳累,而且这样做也能防止我走入单任务的思维惯性陷阱。然后在第二天晚上,你完成了客户的任务,之后也顺利拿到WCG总冠军。
曾经有过很多关于心理学和人脑结构的文章探讨过哪种工作方式才能让工作效率最大化,每种方式都有自己的优点和适用场合。
单线程观点认为:1. 一个人的工作如果被打断的话(如电话等),他想要回到被打断前的工作状态平均需要20分钟,这是有大量数据证明的。不停的切换任务是效率最低的方式。2.对于任意一项技能,你对它的了解程度与你学习它的时间是成幂函数关系(指数大于1,凹函数),所以你应该专心于一件事情。
多线程观点认为:大脑的不同区域负责不同的工作,同时处理两种不同性质的工作,如画画和逻辑推理,就像是双核cpu一样,这样做比一个cpu单独工作效率要高。而且,如果你长时间专注于一项工作,你会对它越来越麻木,就像程序员能够轻易发现别人程序中的bug,却找不到自己程序中的bug一样,你需要适时的跳出当前的任务,换一种思维方式。
其实,选择单线程还是多线程取决于你对该任务的掌握程度,如果你对于该任务来说是个新手,就应该采用单线程的方式;如果你是个专家,能够达到用右脑编程的水平,对于多线程的任务切换所消耗的时间就可以忽略不记了。不过对于我来说,编程还是单线程效率最高。具体可以参见我之前的文章http://blog.sina.com.cn/s/blog_8e356e160100xsxs.html。
PS: 为什么人人都要学一点音乐?
人脑的磁共振影像表明,人脑在演奏乐器时,大脑的所有部分几乎都处于活跃状态。也就是说,无论你的工作是什么,演奏乐器都可以帮助你放松大脑,而且是全方位的,这也是我在实验室放个吉他的原因。
假设你现在有两个任务要完成,一是完成一个客户交给你的程序任务,二是为参加WCG而苦练dota, 先来看看你喜欢下面的哪一种工作方式:
1.今天我要把这个程序编出来,然后你从早到晚一直忙于编程,因为把精力集中于一件事情上是效率最高的方法,然后在第一天晚上你终于把客户的任务完成了。第二天又练习了一天dota, 然后顺利拿到WCG总冠军。
2. 编一天的程序太累了,我每完成程序的一个模块就练两局dota, 这样可以使得大脑的各个区域充分被利用,不至于让一个区域过度劳累,而且这样做也能防止我走入单任务的思维惯性陷阱。然后在第二天晚上,你完成了客户的任务,之后也顺利拿到WCG总冠军。
曾经有过很多关于心理学和人脑结构的文章探讨过哪种工作方式才能让工作效率最大化,每种方式都有自己的优点和适用场合。
单线程观点认为:1. 一个人的工作如果被打断的话(如电话等),他想要回到被打断前的工作状态平均需要20分钟,这是有大量数据证明的。不停的切换任务是效率最低的方式。2.对于任意一项技能,你对它的了解程度与你学习它的时间是成幂函数关系(指数大于1,凹函数),所以你应该专心于一件事情。
多线程观点认为:大脑的不同区域负责不同的工作,同时处理两种不同性质的工作,如画画和逻辑推理,就像是双核cpu一样,这样做比一个cpu单独工作效率要高。而且,如果你长时间专注于一项工作,你会对它越来越麻木,就像程序员能够轻易发现别人程序中的bug,却找不到自己程序中的bug一样,你需要适时的跳出当前的任务,换一种思维方式。
其实,选择单线程还是多线程取决于你对该任务的掌握程度,如果你对于该任务来说是个新手,就应该采用单线程的方式;如果你是个专家,能够达到用右脑编程的水平,对于多线程的任务切换所消耗的时间就可以忽略不记了。不过对于我来说,编程还是单线程效率最高。具体可以参见我之前的文章http://blog.sina.com.cn/s/blog_8e356e160100xsxs.html。
PS: 为什么人人都要学一点音乐?
人脑的磁共振影像表明,人脑在演奏乐器时,大脑的所有部分几乎都处于活跃状态。也就是说,无论你的工作是什么,演奏乐器都可以帮助你放松大脑,而且是全方位的,这也是我在实验室放个吉他的原因。
相关文章推荐
- 我们的大脑是单线程结构还是多线程结构?
- 在.NET客户端程序中应用多线程目录类与结构的实例比较类与结构的差别如何选择结构还是类一
- 多线程理解和我们为什么要使用线程
- Android性能优化5 多线程并发的性能问题所幸的是,Android系统为我们提供了Looper、Handler、MessageQueue来帮助实现上面的线程任务模型: Looper: 能够确保线
- java,web应用中,关于多用户访问,是不是就是一个用户等于一个线程? 50 那一般的时候是多用户多线程还是多用户单线程。 6S根本停不下来 | 浏览 2065 次 我有更好的答案 发布于2016-
- Servlet的多线程和线程安全 线程安全 首先说明一下对线程安全的讨论,哪种情况我们可以称作线程安全? 网上对线程安全有很多描述,我比较喜欢《Java并发编程实战》给出的定义,“当多个线程
- java线程基础巩固---多线程与JVM内存结构的关系及Thread构造函数StackSize的理解
- 多线程理解和我们为什么要使用线程
- c#中跨线程调用windows窗体控件 .我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。
- linux网络编程之posix 线程(一):线程模型、pthread 系列函数 和 简单多线程服务器端程序
- Java多线程-线程状态、sleep()、yield()、join()
- 张孝祥java多线程视频笔记----线程范围内共享变量
- iOS--多线程之线程间通讯
- 如何获得线程对象,获得Thread对象,得到线程对象,根据线程名获得线程对象,多线程取得线程对象
- 多线程的使用——中断线程详解(Interrupt)
- Java 多线程学习笔记 线程通讯 wait notify notifyAll的理解
- java 多线程学习之多生产者多消费者产生的线程安全问题分析与解决:Lock和Condition
- 0019 Servlet容器的实现:单实例多线程的线程安全问题【基础】
- 重新想象 Windows 8 Store Apps (42) - 多线程之线程池: 延迟执行, 周期执行, 在线程池中找一个线程去执行指定的方法
- 线程、多线程与线程池总结