gpt4 book ai didi

multithreading - 用户定义的结构不能通过 tid.send 传递

转载 作者:行者123 更新时间:2023-12-04 15:47:59 33 4
gpt4 key购买 nike

我创建了一个多线程模拟器,它严重依赖于线程之间传递的 native 消息(不要告诉我去单线程它是为了我关于 D 的论文,我需要让它工作)

在一次非常耐用的杂物之后,涉及到和来自 shared 的大量物体的类型转换.它有一些丑陋的竞争条件错误。我决定创建一个不透明类型,它代表一个可以接收消息的对象,这些消息应该能够在没有所有转换的情况下传递......

没有这样的运气

struct OpaqueFaseSim{
Tid tid;
void send(...){...}
}

void foo(){
Tid tid;
long time;
OpaqueFaseSim ofs;
//...
tid.send(ofs,time);//Error: static assert "Aliases to mutable thread-local data not allowed."
}

为什么我可以传递一个 Tid 而不是一个只包含一个 Tid 的结构?

我该如何解决这个问题

最佳答案

我认为这是因为 Tid 有一个 MessageBox 字段,它是一个类类型。

您可以将 OpaqueFaseSim 的 tid 字段输入为 shared 或 ___gshared ,它会起作用:

struct OpaqueFaseSim{
Bar bar;
shared Tid tid;
// __gshared Tid tid;
}

关于multithreading - 用户定义的结构不能通过 tid.send 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5984816/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com