0

我有以下函数用作 windows 光纤的入口点。

void foo(void*) {
    for(int i =0; i < 10; ++i) { doStuff(); }
}

现在我SwitchToFiber在一个 for 循环中调用我的 main;类似于以下内容。

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 是否已经完成执行?(无需传入状态变量或声明全局状态变量进行通信。)

4

2 回答 2

0

声明一个全局变量。执行foo函数后,改变全局变量的状态foo

main检查状态变化。如果全局变量的状态发生变化,则意味着foo已经执行。

于 2013-12-25T06:17:30.653 回答
0

我如何判断 foo 是否已经完成执行?

你说看到你的整个程序的终止 - 见Fibers

如果您的 Fiber 函数返回,则运行 Fiber 的线程将退出。

于 2016-11-15T12:04:07.953 回答