Can't Compile Global Semaphores?
rikki cattermole
rikki at cattermole.co.nz
Mon Oct 8 15:56:59 UTC 2018
On 09/10/2018 4:43 AM, Matt Richardson wrote:
> On Monday, 27 July 2015 at 20:57:00 UTC, Jack Stouffer wrote:
>> On Monday, 27 July 2015 at 20:12:10 UTC, John Colvin wrote:
>>> Yes, but then core.sync.semaphore doesn't support being shared, so...
>>
>> Ok, so I made the code run by using __gshared instead of shared. It
>> seems really odd that a semaphore object doesn't support being shared,
>> this that a bug?
>>
>> Here is the modified code:
>>
>> import core.sync.semaphore;
>> import core.thread;
>> import std.string;
>> import std.stdio;
>>
>> __gshared string data;
>> __gshared Semaphore sem;
>>
>>
>> void read() {
>> data = "From Thread";
>> sem.notify();
>> }
>>
>>
>> void write() {
>> sem.wait();
>> data.writeln;
>> }
>>
>>
>> void main() {
>> sem = new Semaphore();
>> Thread reader = new Thread(&read);
>> Thread writer = new Thread(&write);
>>
>> reader.start();
>> writer.start();
>> }
>
> I JUST found this after several hours of searching. Thank you, Jack.
>
> Now if sharing a semaphore could be thing, I'd be happy. It's honestly
> one of (it's actually a long list) the major blocks to us using D
> primarily.
shared doesn't do much, so if __gshared works, use it (that is what it
is there for). So it isn't a blocker.
More information about the Digitalmars-d-learn
mailing list