最近在研究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事件是否已經完成了?
謝謝各位