多工 11/365

A Thought

「多工」字面上的意思,就是同時做很多工作。

人都會希望自己可以多工,事實上我們也試著這麼做了。因為我們總是有太多的工作;不得不做的工作,自己想做的工作,還有永遠不夠的時間。畢竟多工是個來自電腦領域的詞彙,也許我們應該看看電腦領域怎麼看待它。

Multitask是很籠統的字,最原始的定義是:只要電腦可以在一個程式結束前就開始執行下一個程式,就可以算是多工。根據這個定義,我們需要認識兩個關鍵字:Concurrency和Parallelism。維基百科把它們分別翻譯成「併發處理」與「平行處理」。這兩者有甚麼差別?

知名技術網站Stack Overflow上,有人給了很好的答案:

-Concurrency is when two tasks can start, run, and complete in overlapping time periods. It doesn't necessarily mean they'll ever both be running at the same instant. Eg. multitasking on a single-core machine.
-Parallelism is when tasks literally run at the same time, eg. on a multicore processor.

併發處理其實只是看起來多工,它確實同時開始了很多工作,使得不會有工作被留到最後,但事實上處理器是在不同工作之間切換,並沒有縮減任何工作所需要的時間。

平行處理才是真正的多工,能把不同的工作切分給不同的處理器(核心)去做。理想上,越多處理器就能越快完成大量工作。

真正的平行處理是很難的,即使在電腦科學的領域,也不是每件事都可以平行。事實上,很多工作的本質就不適合平行處理;怎麼去制定一些規範或是新工具來做到更好的平行,一直是這個領域的難題。人們想要的多工,其實是指平行處理。因為只有平行處理才能真的同時做很多事,而不是看起來在做很多事。

然而,人是不可能平行處理的,我們以為的多工其實都是種併行。因為我們只有一個大腦。如果大腦(處理器)日漸增加的機器都沒有辦法同時做很多事,我們當然更不行。當我們假裝自己在多工而東做一點西做一點的時候,每次的切換,其實都會花費你額外的心力與時間;因為你必須放下目前的工作,找回之前的進度,然後重新熟悉。越忙,越慢。

管理時間有很多方法,一個確定的事實是:如果你不是想要看起來很忙,那麼專心做完眼前的任務通常是最快的。



--
圖片來源:Photo Pin
Recommend


Keanux

登入或註冊帳號

Facebook 登入

我們絕對不會未經過你的允許發表到Facebook