shared not working!

Hiemlick Hiemlicker via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Jul 3 16:20:35 PDT 2016


I have thread. It locks up. If I changed from a bool val it is 
using from shared to __gshared it works. I checked the address 
inside and outside of the thread and they are different for 
shared and same for __gshared.

I thought shared was essentially __gshared with additional 
semantics? That a shared variable was the same across all threads?

The only difference is that the thread is a windows CreateThread. 
I guess D doesn't know about such threads and hence shared 
doesn't extend across to them?

If so, the docs should be updated to mention this.

My code goes something like this:

struct WinThread
{
    shared bool isPaused = false;
    ...

    // Windows threaded callback uses isPaused
}


// use isPaused in main thread

// Crashes in WinThread on use expressions involving isPaused.

Checking pointers between the two shows they are different.

changing to _gshared gives the same address of isPaused for both 
threads.







More information about the Digitalmars-d-learn mailing list