【发布时间】:2014-03-22 21:50:43
【问题描述】:
为什么在 D 中我不能通过 Tid.send 结构的本地实例发送到另一个线程? 我想像这样简单地处理线程通信:
void main()
{
...
tid.send(Command.LOGIN, [ Variant("user"), Variant("hello1234") ] );
...
}
void thread()
{
...
receive(
(Command cmd, Variant[] args) { ... })
)
...
}
如果我理解正确,D 应该在堆栈中创建 Variants 数组并 然后将数组的内容复制到发送功能对吗?所以应该没有 关于同步和并发的问题。我很困惑,这种并发是 奇怪,我习惯用 C# 和 C 编写线程。
我也对shared 关键字和创建共享类感到困惑。
通常当我尝试从非共享对象调用共享类实例的方法时,
编译器抛出错误。为什么?
【问题讨论】:
标签: multithreading concurrency struct d spawn