阻塞 VS 挂起

大体上说,协同程序可以挂起程序而不需要阻塞线程。线程阻塞代价更高,尤其是在高负荷时,因为只有一小部分线程在执行,所以阻塞一些线程将导致一些重要的工作被延迟。

协同程序挂起几乎是没有代价的,从另一方面讲,不需要上下文切换或其他操作系统的介入。在那之上,挂起还是可控的,可以通过用户库来进行扩展:作为库的设计者,我们可以决定在挂起时做什么操作和根据我们的需要执行优化/输出日志/拦截等操作。

另一个不同就是协同程序不能随意使用,而是只有在所谓的挂起点处使用,这些挂起点会被特别标记的函数调用。

results matching ""

    No results matching ""