Lal*_*and 8 c++ coroutine boost-asio
有没有什么方法可以与boost :: asio一起使用线程安全的协同程序?
我想让一个人io_service在多个线程上运行,并让我的一些处理程序成为协同程序.
Boost.Coroutine似乎是一个解决方案,但他们证明他们不支持恢复在一个单独的线程中启动的协同程序.
据我所知,这个问题只有两种可能的解决方案:
两者都没有任何好的解决方案.在一个解决方案中,我失去了协同程序.在另一方面,我失去了大部分的多线程能力.
小智 3
看来这个问题没有简单的解决办法。
主要问题可能是由于 C++ 允许编译器对函数中发生的大部分内容进行重新排序。因此,您不能可靠地依赖函数中发生的事情的顺序。
看起来我最终将不得不使用一系列回调,如果我希望让所有内容在语义上看起来都像代码块,则可能使用 lambda。
也许我什至可以使用解析为 lambda 的宏来模拟协程样式。