multithreading - 如何将纤维传递给线程?

标签 multithreading concurrency d fiber

我想知道如何将纤维传递到线程?

我设法做到这一点的唯一方法是通过在共享之间进行转换。

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 论坛主题:

http://forum.dlang.org/post/[email protected]

关于multithreading - 如何将纤维传递给线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36663720/

相关文章:

rest - 无法发送正确的休息请求

d - 检查是否从类型构造函数创建了完整类型

java - 捕获异常和错误

Python:进程/线程监控

Java并发-线程未完成循环

java - LoadLoad barrier 的真正作用是什么?

shared-libraries - d2 : Calling writefln in D shared libraries from C side

c - C题中的多线程编程

java - 让线程只是等待

python - gunicorn 和/或 celery : What is the way get the best out of both?