为什么协程(现在在C 1z的最新草案中)被实现为核心语言
功能(花哨的关键字和所有)而不是库扩展?
已经存在一些针对它们的实现(Boost.Coroutine等),其中一些可以与我所阅读的平台无关.为什么委员会决定将其融入核心语言本身?
我不是说他们不应该,但是Bjarne Stroustrup自己在一些谈话中提到过(不知道哪一个),应该尽可能在图书馆中实现新功能,而不是触及核心语言.
那么有充分的理由吗?有什么好处?
虽然有协同程序库实现,但这些协议往往有特定的限制.例如,库协议实现无法检测协程挂起时需要维护哪些变量.可以
解决这种需要,例如,通过以某种形式使用过的变量.但是,当协同程序应尽可能地像正常
函数一样时,应该可以定义局部变量.
我不认为Boost协同程序的任何实现者认为他们各自的库接口是理想的.虽然它是目前语言中可以实现的最佳选择,但总体使用可以得到改善.