据我所知,yield
的工作方式与return
类似,但不会破坏功能的执行。
这是我的代码:
import std.stdio;
import core.thread;
void main()
{
writeln("1");
foo();
writeln("2");
}
void foo()
{
writeln("Hello");
Fiber.yield();
writeln("world");
}
输出:
> app.exe
1
Hello
object.Error@(0): Access Violation
答案 0 :(得分:2)
来自文档:"强制上下文切换远离调用光纤。"
调用此函数时,您不在光纤内部,因此违反了前提条件。接下来是未定义的行为。
您需要创建光纤,将&foo
传递给构造函数,然后在光纤上调用.call()
。