协程的协作取消
字数统计:1748
C++20 的协程在大多数方面提供了非常高的灵活性,但唯有一点却相对死板,即协程的退出路径。协程只有异常和返回值两个路径可以打断协程执行,可能大部分人意识不到这有什么问题,但我认为这实际上缺了重要一环:协作取消。
Non-Profit, International
Spirit unsterblich.
AttachConsole,它的用途是使得Subsystem为Windows的GUI/后台程序,在使用控制台执行时可以获得控制台的输入输出句柄,使得它们既可以独立使用也可以和控制台配合使用。但该函数实际上存在缺陷使得它不能很好完成该任务。
std::mutex 有一个非常微妙的要求(见N2994和LWG828):它的构造函数需要是 constexpr 的。咋一看该要求在早期Windows上不能实现,因为Critical Section需要使用InitializeCriticalSection初始化底层字节为非0的有意义值,其他内核对象(例如Mutex)也是如此。但实际上它是可以实现的,只是可能稍微增加一些锁冲突。