最近在研究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首耳朵就错乱了啦,应该是听不出来