作者ArcherState (电费不缴)
看板C_and_CPP
标题[问题] 关於Thread与Coroutine的问题
时间Sat Nov 26 14:15:21 2016
最近在研究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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1480140925.A.2F9.html
1F:→ Caesar08: 耳朵没那麽厉害... 11/26 14:18
所以背後是真的进行了多次的context-switch,只是速度过快人耳无法分辨这样吗?
※ 编辑: ArcherState (140.123.97.47), 11/26/2016 14:21:29
2F:推 stupid0319: 用耳朵跟CPU比速度? 11/26 14:23
3F:→ Caesar08: 现在的async都是用dma去做吧,不会开别的thread 11/26 14:23
4F:→ Caesar08: 如果你同时拨放几百万的因为,应该就听得出来 11/26 14:24
5F:→ Caesar08: 音乐 11/26 14:25
6F:推 Yshuan: 只讲音乐的话 我会猜mixer driver和音效卡有热线 11/26 14:38
7F:→ ArcherState: 那单纯Coroutine是算单Thread吗?因为有文章说Lua的 11/26 14:41
8F:→ ArcherState: Cortoutine也是一种Thread物件 11/26 14:41
9F:推 TeaEEE: 音乐是khz,可是cpu可是ghz呢 11/26 14:50
10F:→ azureblaze: 音效卡有buffer,CPU只要负责塞资料进去就好了 11/26 15:31
11F:→ azureblaze: 用CPU做即时音效处理炸音多的是 11/26 15:32
12F:→ wtchen: 这篇文章跟C/C++的关联是? 11/26 17:51
13F:→ wtchen: 虽然我对本主题感兴趣,但还是请补上关联点。 11/26 17:51
14F:推 littleshan: coroutine 是一种特别的 user-level thread 11/26 19:04
15F:推 littleshan: 一般的thread不会定义中断点(yield) 11/26 19:06
16F:→ littleshan: 但coroutine需要自行定义中断位置 11/26 19:06
17F:→ firejox: coroutine 只是一种概念 跟thread没什麽关系 11/26 21:13
18F:推 DirKai: 你播5首耳朵就错乱了啦,应该是听不出来 11/27 11:59
19F:→ michael0728n: azure正解 11/27 22:23