On Tuesday, May 20, 2014 11:42:48 AM Ali Çehreli via Digitalmars-d-learn 
wrote:
> On 05/20/2014 11:38 AM, Charles Hixson via Digitalmars-d-learn wrote:
> > Is it a bug that an immutable struct cannot be sent to a thread?  (It
> > compiles without problem if I make all elements mutable.)
> 
> Does the struct have any mutable indirection? Then it is illegal.
> Otherwise, can you demonstrate with minimal code please?
> 
> Ali
Nope.  Here it is (with the immutable tags removed):
/**     This is the only message that one cell sends to another.        */
struct Msg
{       /**     The cell id# of the sender of the message.      */
        uint64_t        from;
        /**     The cell id# of the recipient of the message.   */
        uint64_t        to;
        /**     The kind of action the message is impelling.    */
        Act     act;
        /**     The tick on which the message was accepted for transmission.
         * This is set by std.datetime.Clock.currStdTime()      */
        long    tick;
        /**     Distance between cells.  Not currently well defined except in
         * the case of two words, in which case it is the number of words of
         * separation, where adjacent is 1.     */
        float   dist;
        /**     Not currently well defined.     */
        int     value;

        this    (uint64_t from, uint64_t to, Act act, float dist, int value)
        {       this.from       =       from;
                this.to         =       to;
                this.act                =       act;
                this.tick       =       Clock.currStdTime;
                this.dist       =       dist;
                this.value      =       value;
        }
}


Reply via email to