[問題] 關於Thread與Coroutine的問題
最近在研究coroutine這個東西,以前的計算機組織的盲點瞬間浮現出來。
就我目前的理解,每一個process至少會開一條main thread來向OS請求CPU的使用權,
而假如不考慮Hyper-Threading的技術下,每一個Core同時應該只會有一個執行緒在運作,
因此OS會透過排程的方式來決定thread的分配,有需要取代時會有context-switch產生。
我目前的問題是,目前我的電腦假如是4核心,那為什麼我可以同時開4個以上的音樂播放器來播放音樂,
猜測是透過Time Sharing的方式,但是假如是這樣的話,我應該可以明顯聽出來每一首歌會斷斷續續才對吧?
另一個是和coroutine有關的問題,
日前是讀到https://goo.gl/47M4QP 這篇文章
他最後一個例子是使用Async與Coroutine的配合,
Async是指他會在背後開一條新的thread來幫我做我分配給他的事情嗎?
在來是Async如何與Coroutine溝通?因為Coroutine假如回到main thread後,他要如何知道背後的async事件是否已經完成了?
謝謝各位
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.97.47
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1480140925.A.2F9.html
→
11/26 14:18, , 1F
11/26 14:18, 1F
所以背後是真的進行了多次的context-switch,只是速度過快人耳無法分辨這樣嗎?
※ 編輯: ArcherState (140.123.97.47), 11/26/2016 14:21:29
推
11/26 14:23, , 2F
11/26 14:23, 2F
→
11/26 14:23, , 3F
11/26 14:23, 3F
→
11/26 14:24, , 4F
11/26 14:24, 4F
→
11/26 14:25, , 5F
11/26 14:25, 5F
推
11/26 14:38, , 6F
11/26 14:38, 6F
→
11/26 14:41, , 7F
11/26 14:41, 7F
→
11/26 14:41, , 8F
11/26 14:41, 8F
推
11/26 14:50, , 9F
11/26 14:50, 9F
→
11/26 15:31, , 10F
11/26 15:31, 10F
→
11/26 15:32, , 11F
11/26 15:32, 11F
→
11/26 17:51, , 12F
11/26 17:51, 12F
→
11/26 17:51, , 13F
11/26 17:51, 13F
推
11/26 19:04, , 14F
11/26 19:04, 14F
推
11/26 19:06, , 15F
11/26 19:06, 15F
→
11/26 19:06, , 16F
11/26 19:06, 16F
→
11/26 21:13, , 17F
11/26 21:13, 17F
推
11/27 11:59, , 18F
11/27 11:59, 18F
→
11/27 22:23, , 19F
11/27 22:23, 19F