I read where shared classes have not been implemented yet. So I'm using just a struct e below: But the output below is showing that sharing is not happening between Struct in main() and the various spawned threads.
I'm I doing something wrong?


creating queue in EventBuffer constructor
eventBuffer.enter = 1
eventBuffer.leave = 0
eB.enter = 0
eB.enter = 0
eB.leave = 0
eB.leave = 0
eB.enter = 0
eB.leave = 0


void producer(in ref shared(EventBuffer) eB, shared(Lock) lock)
{
    writeln("eB.enter = ", eB.enter);
    writeln("eB.leave = ", eB.leave); 
    Event event;
    foreach(i; 0..7)
    {
        synchronized(lock)
        {
            event.keyPressed = i;
            eB.enterOrLeaveQueue(Direction.Entering, event);
        }
    }
}

void main()
{       
    shared(Lock) lock = new shared(Lock)();

    shared(EventBuffer) eventBuffer = EventBuffer(50);
        
    writeln("eventBuffer.enter = ", eventBuffer.enter);
    writeln("eventBuffer.leave = ", eventBuffer.leave);               
        
    foreach(i; 0..3)
    {
        spawn(&producer, eventBuffer, lock);        
    }
}

Reply via email to