看板 C_and_CPP 關於我們 聯絡資訊
最近在研究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
Caesar08: 耳朵沒那麼厲害... 11/26 14:18
所以背後是真的進行了多次的context-switch,只是速度過快人耳無法分辨這樣嗎? ※ 編輯: ArcherState (140.123.97.47), 11/26/2016 14:21:29
stupid0319: 用耳朵跟CPU比速度? 11/26 14:23
Caesar08: 現在的async都是用dma去做吧,不會開別的thread 11/26 14:23
Caesar08: 如果你同時撥放幾百萬的因為,應該就聽得出來 11/26 14:24
Caesar08: 音樂 11/26 14:25
Yshuan: 只講音樂的話 我會猜mixer driver和音效卡有熱線 11/26 14:38
ArcherState: 那單純Coroutine是算單Thread嗎?因為有文章說Lua的 11/26 14:41
ArcherState: Cortoutine也是一種Thread物件 11/26 14:41
TeaEEE: 音樂是khz,可是cpu可是ghz呢 11/26 14:50
azureblaze: 音效卡有buffer,CPU只要負責塞資料進去就好了 11/26 15:31
azureblaze: 用CPU做即時音效處理炸音多的是 11/26 15:32
wtchen: 這篇文章跟C/C++的關聯是? 11/26 17:51
wtchen: 雖然我對本主題感興趣,但還是請補上關聯點。 11/26 17:51
littleshan: coroutine 是一種特別的 user-level thread 11/26 19:04
littleshan: 一般的thread不會定義中斷點(yield) 11/26 19:06
littleshan: 但coroutine需要自行定義中斷位置 11/26 19:06
firejox: coroutine 只是一種概念 跟thread沒什麼關係 11/26 21:13
DirKai: 你播5首耳朵就錯亂了啦,應該是聽不出來 11/27 11:59
michael0728n: azure正解 11/27 22:23