[问题] 关于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