我使用以下函数作为Windows光纤的入口点。
void foo(void*) {
for(int i =0; i < 10; ++i) { doStuff(); }
}
现在我在主循环中调用SwitchToFiber
for a循环;如下所示。
int main() {
... create the fiber and stuff
for (int i = 0; i < 50; ++i) {
SwitchToFiber(foo_fiber_ptr);
// how do I tell if foo has already finished execution?
// (without passing in a state variable to communicate.)
if (someCondition) { break; }
}
... do stuff
}
所以我的问题是: 如何判断foo是否已经完成执行?(不传入状态变量或声明全局状态变量进行通信。)
答案 0 :(得分:0)
声明一个全局变量。执行foo
函数后,在foo
中更改全局变量的状态。
在main
中检查状态变化。如果更改了全局变量的状态,则表示已经执行了foo
。
答案 1 :(得分:0)