He creado un simulador multiprocesado que depende en gran medida del mensaje nativo que pasa entre los hilos (no vayan diciéndome que vaya con un único hilo para mi tesis en D e I necesita hacer que esto funcione)estructura definida por el usuario no se puede pasar a través de tid.send
después de un muy dudoso kludge que involucra una gran cantidad de moldes de objetos ay desde shared
. que prolly tenía algunos errores de condición de raza feos. Decidí crear un tipo opaco que representa un objeto que pueda recibir mensajes que deben ser capaces de pasar por ahí sin todo lo que la fundición ...
no hubo suerte
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."
}
qué puedo pasar una Tid alrededor, pero no una estructura que contiene solo a Tid?
y cómo se puede arreglar que este
Como una suposición de leer el mensaje de error: Usted puede tratar de añadir una inmutable en alguna parte. – BCS
agregar inmutable a Tid significa que no puedo enviar mensajes a él, es un poco contrario al propósito de tener esta estructura (std.concurrency.send no acepta Tid inmutables) –