他們都認為Golang有非常簡單的Multi-Threads可以處理
所以我就來試試
就以Golang提供的教學按例
只要用go就可以開一條新的thread
但我用cpu檢視圖發現,
不管開幾條都僅用一個CPU,
看來是一腦多用模式,
並不是多腦多用,
有點像是python的threading而不是multiprocessing
適合I/O讀與寫等等的協同作業,
而不是和大量計算處理 (fork)。
另外我發現一點執行時最怪的地方,
我至今無法理解 (例如下面程式),
1. for i:=0; i < 4; i++ {
2. go afunc()
3. }
4. afunc()
如果沒有第4行,則第2行的結果就不會被執行,
這個執行原則我到現在還是沒有完全理解,
不過我也沒有多的時間去探究,等改日有機會深探再說。
如果要用到多核處理,
目前相關的支援和程式碼都在github上,
還不是官方發表的 (或是我沒找到?),
但不管怎樣處理,若要完全使用到所有的CPU
最快最方便的處理方法就是透過OS下指令來執行process了
2017/3/31後記: 去年golang出新版本1.5以上已直接支援multi-processing無需在另外設定
只要用go就可以開一條新的thread
但我用cpu檢視圖發現,
不管開幾條都僅用一個CPU,
看來是一腦多用模式,
並不是多腦多用,
有點像是python的threading而不是multiprocessing
適合I/O讀與寫等等的協同作業,
而不是和大量計算處理 (fork)。
另外我發現一點執行時最怪的地方,
我至今無法理解 (例如下面程式),
1. for i:=0; i < 4; i++ {
2. go afunc()
3. }
4. afunc()
如果沒有第4行,則第2行的結果就不會被執行,
這個執行原則我到現在還是沒有完全理解,
不過我也沒有多的時間去探究,等改日有機會深探再說。
如果要用到多核處理,
目前相關的支援和程式碼都在github上,
還不是官方發表的 (或是我沒找到?),
但不管怎樣處理,若要完全使用到所有的CPU
最快最方便的處理方法就是透過OS下指令來執行process了
2017/3/31後記: 去年golang出新版本1.5以上已直接支援multi-processing無需在另外設定
沒有留言:
張貼留言