определяемая пользователем структура не может передаваться через tid.send

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

и как я могу это исправить

6
задан ratchet freak 12 May 2011 в 21:40
поделиться