最近在研究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事件是否已經完成了?
謝謝各位
作者:
Caesar08 (Caesar)
2016-11-26 14:18:00耳朵沒那麼厲害...
作者:
Caesar08 (Caesar)
2016-11-26 14:23:00現在的async都是用dma去做吧,不會開別的thread如果你同時撥放幾百萬的因為,應該就聽得出來音樂
作者:
Yshuan (倚絃)
2016-11-26 14:38:00只講音樂的話 我會猜mixer driver和音效卡有熱線
那單純Coroutine是算單Thread嗎?因為有文章說Lua的Cortoutine也是一種Thread物件
作者: TeaEEE (愛不趴 不愛趴) 2016-11-26 14:50:00
音樂是khz,可是cpu可是ghz呢
音效卡有buffer,CPU只要負責塞資料進去就好了用CPU做即時音效處理炸音多的是
作者:
wtchen (沒有存在感的人)
2016-11-26 17:51:00這篇文章跟C/C++的關聯是?雖然我對本主題感興趣,但還是請補上關聯點。
coroutine 是一種特別的 user-level thread一般的thread不會定義中斷點(yield)但coroutine需要自行定義中斷位置
作者:
firejox (Tangent)
2016-11-26 21:13:00coroutine 只是一種概念 跟thread沒什麼關係
作者:
DirKai (Dirk_AI(MIX))
2016-11-27 11:59:00你播5首耳朵就錯亂了啦,應該是聽不出來