-1

我想知道window提供的光纤。

假设我创建了 4 个纤维。

- - - - - - 线 - - - - - - - - -

纤维1 - 纤维2 - 纤维3 - 纤维4

^

Fiber 1 现在线程执行。

  1. 一个线程只能同时运行一根光纤。这是正确的?

  2. 如果一个线程终止了 Fiber1,那么另一个所有的 Fiber 也会终止吗?

  3. 我知道光纤是非抢占式的。那么如果我想将fiber1切换到fiber2,有没有办法只能在fiber1中调用SwitchToFiber呢?

  4. 如果我在执行某些任务期间在 Fiber1 中调用 SwitchToFiber,那么 Fiber1 会立即休眠吗?还是完成任务后睡觉?

  5. 光纤1到光纤4没有共享空间?

  6. 而且没有共享空间,也就没有必要锁定光纤。这是正确的?

我阅读了 MSDN 文档,但我无法理解某些内容。所以我在这里问。

4

1 回答 1

-1

SwitchToFiber就像longjmp, 并且就像是分配额外堆栈空间CreateFiber的扩展版本。就像一个由 分配的上下文块。最重要的是,给予者自己什么都不做,就像 C 的扩展版本,例如类似于 gcc 的“computed goto”扩展,除了它可以在跳转时切换堆栈。您可以使用,和一些.setjmpDeleteFiberfreesetjmplongjmpgotosetjmplongjmpalloca

于 2019-01-06T17:14:05.890 回答