在一開始開發程式時,「自動」執行批次任務相對比「手動」下,怎麼樣都覺得很有效率,但當程式開發到一定程度時,某些專案就會開始要求速度,例如我近幾個月都在開發選擇權造市程式,這個時候執行速度就是相當重要啦!
一般正常狀態撰寫的程式是由上而下的線性執行,當執行無誤完成第一步後,才會接著執行下一步。如果任務之間沒有相依性,我們可以如何增加效率呢?
我們先舉一個生活上的例子——「煮飯」,近期作為外派菜鳥的我正在學習如何自己煮飯,畢竟在台灣的都會區生活實在太方便了,到了異國只能自己來才吃得到想吃的味道。而我目前的階段屬於煮飯菜鳥,一次不能做太多事,免得手忙腳亂全部搞砸,所以一次只能做一件事情,因為很多事情都沒做過也不知道時間處理會如何。
Lv 1 廚房菜鳥:(Single thread)
* 一次處理一件任務:例如先洗菜,再煮一鍋水,再把菜放下去燙;洗米、泡米、再放入電鍋煮。
* 假設每件任務都是獨立且依序執行
Lv 2 廚房進階菜鳥:(Asynchronous)
* 區別什麼任務會花比較久的時間,但又不用自己實際盯場,例如電鍋煮飯。
* 當在執行等待任務完成的時間,就可以先去