我想知道如何将纤维传递到线程?
我设法做到这一点的唯一方法是通过在共享
之间进行转换。
auto fiber = new Fiber((){
});
auto t = spawn((){
auto fib = cast(Fiber)receiveOnly!(shared(Fiber));
writeln("fib");
fib.call();
});
send(t, cast(shared(Fiber))fiber);
但这似乎不对。我想我没有完全理解共享
的含义。
我必须将光纤转换为共享,因为我不允许在没有它的情况下将其发送到线程。我必须将其转换回光纤,因为我无法在共享光纤上调用 Fiber.call
。
将Fiber
传递给线程的正确方法是什么?
最佳答案
现在(可能永远不会)不支持跨线程移动光纤。使用共享可以在某种程度上起作用,但它很危险,而且我不确定它是否适用于所有编译器。更多信息请参见此 dlang 论坛主题:
关于multithreading - 如何将纤维传递给线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36663720/