对。。你可以搜一下 python 的 threading.Event 类型,以及 win32api 的 CreateEvent() 函数。
这个工具类以前是用于线程的。我以前写 Java 的时候也经常用。
本质上个 condition + flag
struct Event<T>
{
Condition cnd;
bool flag;
T value;
void set(T v) {
flag = true;
value = v;
cond.notify();
}
T await() {
if (!flag)
cond.wait();
return value;
}
}
很简单吧。但是它的意义很重大。对于线程 Condition 的实现一般是现成的。对于协程,实现等价的 Condition 相当不容易。是大多数协程库的重大挑战。有兴趣你们可以实现一个 c++20 coroutine 的版本。有了 Event 之后,立即可以把大多数现有的 C++ 异步程序库给接入到 c++20 coroutine 里面。
注意,实现 coroutine condition 需要事件循环。
【 在 stub 的大作中提到: 】
: 不太清楚event,上面的逻辑是不是就是在回调函数中唤醒协程
--
修改:hgoldfish FROM 120.41.212.*
FROM 120.41.212.*