我一直很佩服那些專業電子競技運動員,也一直很喜歡china_tttt,他們是如何能夠兼顧正面戰場的決戰,同時到對方家裡三線偷襲?這種多執行緒操作對於初學者來說簡直就是噩夢,但是對於專業人員來說,它卻和單執行緒操作是差不多的。
假設你現在有兩個任務要完成,一是完成乙個客戶交給你的程式任務,二是為參加wcg而苦練dota, 先來看看你喜歡下面的哪一種工作方式:
1.今天我要把這個程式編出來,然後你從早到晚一直忙於程式設計,因為把精力集中於一件事情上是效率最高的方法,然後在第一天晚上你終於把客戶的任務完成了。第二天又練習了一天dota, 然後順利拿到wcg總冠軍。
2. 編一天的程式太累了,我每完成程式的乙個模組就練兩局dota, 這樣可以使得大腦的各個區域充分被利用,不至於讓乙個區域過度勞累,而且這樣做也能防止我走入單任務的思維慣性陷阱。然後在第二天晚上,你完成了客戶的任務,之後也順利拿到wcg總冠軍。
曾經有過很多關於心理學和人腦結構的文章**過哪種工作方式才能讓工作效率最大化,每種方式都有自己的優點和適用場合。
單執行緒觀點認為:1. 乙個人的工作如果被打斷的話(如**等),他想要回到被打斷前的工作狀態平均需要20分鐘,這是有大量資料證明的。不停的切換任務是效率最低的方式。2.對於任意一項技能,你對它的了解程度與你學習它的時間是成冪函式關係(指數大於1,凹函式),所以你應該專心於一件事情。
多執行緒觀點認為:大腦的不同區域負責不同的工作,同時處理兩種不同性質的工作,如畫畫和邏輯推理,就像是雙核cpu一樣,這樣做比乙個cpu單獨工作效率要高。而且,如果你長時間專注於一項工作,你會對它越來越麻木,就像程式設計師能夠輕易發現別人程式中的bug,卻找不到自己程式中的bug一樣,你需要適時的跳出當前的任務,換一種思維方式。
其實,選擇單執行緒還是多執行緒取決於你對該任務的掌握程度,如果你對於該任務來說是個新手,就應該採用單執行緒的方式;如果你是個專家,能夠達到用右腦程式設計的水平,對於多執行緒的任務切換所消耗的時間就可以忽略不記了。不過對於我來說,程式設計還是單執行緒效率最高。具體可以參見我之前的文章
ps: 為什麼人人都要學一點**?
人腦的磁共振影像表明,人腦在演奏樂器時,大腦的所有部分幾乎都處於活躍狀態。也就是說,無論你的工作是什麼,演奏樂器都可以幫助你放鬆大腦,而且是全方位的,這也是我在實驗室放個吉他的原因。
Redis是多執行緒還是單執行緒?
沒錯,大家所熟知的 redis 確實是單執行緒模型,指的是執行 redis 命令的核心模組是單執行緒的,而不是整個 redis 例項就乙個執行緒,redis 其他模組還有各自模組的執行緒的。下面這個解釋比較好 一般來說 redis 的瓶頸並不在 cpu,而在記憶體和網路。如果要使用 cpu 多核,可...
Redis是單執行緒還是多執行緒
準確一點來講,既不是單執行緒,也不是多執行緒。io執行緒 記憶體處理執行緒 服務端和客戶端建立 socket 連線,並分配處理執行緒 首先,主線程負責接收建立連線請求。當有客戶端請求和例項建立 socket 連線時,主線程會建立和客戶端的連線,並把 socket 放入全域性等待佇列中。緊接著,主線程...
js 是單執行緒還是多執行緒
1 js 是單執行緒還是多執行緒?單執行緒,單位時間內只能處理乙個程序,所以會有執行緒阻塞問題 使用 函式解決 或者非同步同步問題 2 let 和 var 宣告變數的區別?1 作用域bai不一樣,var是函式作用域,而let是塊作用域,也就是說,在函式內宣告了var,整個函式內都是有效的,比如說在f...