Я создал многопоточный симулятор, который в значительной степени полагается на собственное сообщение, передаваемое между потоками (не говорите мне чтобы перейти в однопоточную систему, это касается моей диссертации по D, и мне нужно, чтобы это работало)
после очень трудной путаницы, включающей множество преобразований объектов в и из общего доступа
. в котором, вероятно, были некоторые уродливые ошибки состояния гонки. Я решил создать непрозрачный тип, представляющий объект, который может получать сообщения, которые можно передавать без всего этого приведения ...
нет такой удачи
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?
и как я могу это исправить