2018年7月8日 星期日

thread1

Thread-1

雖然以前也有聽過thread,多執行緒嘛,就是電腦可以同時同時做很多事情的意思不是嗎?大概就是這樣的認知.一直到今年我才發現…
原來不是真的同時?!?!?!?!??!?!?!?!?!?
應該說有分成parallel和concurrent,至於他們的中文我永遠會搞混就算了(?!)
在我心中以為的同時跑其實是parallel,但其實我在ruby裡面Thread.new得很開心的時候其實是concurrent
也就是他其實是很快的速度不停的切換現在在跑的thread,然後人類就會覺得他是同時在跑了.
而且我沒辦法確保什麼時候會被切換,這都是交給OS在負責.
我沒辦法完全控制我寫的程式?!?!?!?!?
哎我不能接受(吶喊)
但其實仔細想想我在用一台電腦的時候很多東西反正也都不是我在控制的…交給os處理也不會怎麼樣.
反正就連我的人生我真的能決定的事情也沒有很多
不過,最一開始我連為什麼切換得很快我就會覺得這是同時在跑都不能理解
但後來發現這是因為我用人腦在想的關係,但如果os是用,比方說30毫秒在切換,那我其實根本不會發現
用現實一點的舉例來說的話,比方我因為是一個無法多工的人,所以沒辦法邊走路邊吃要用湯匙吃的冰淇淋,所以就會變成下面這樣
  1. 邊走路邊咬已經在口中的冰淇淋
  2. 停下走路這個動作
  3. 挖冰淇淋到嘴裡
  4. 繼續走+一邊咬
不過因為我動作不快,一個動作都要花上幾秒鐘,所以很明顯就會覺得不是同時,但如果是電腦,這幾個動作會用迅雷不及掩耳的速度就完成了,我根本不會知道其實中間不同行為間有停下來.
所以某種程度上我也是在concurrent?
但話說我是真的無法邊講電話邊走路就是了,我一定會等到我講完再繼續往前走.
Written with StackEdit.

沒有留言:

張貼留言