最近在研究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事件是否已经完成了?
谢谢各位