[問題] 關於Thread與Coroutine的問題

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

Links booklink

Contact Us: admin [ a t ] ucptt.com