https://github.com/dlang/phobos/blob/cd7846eb96ea7d2fa65ccb04b4ca5d5b0d1d4a63/std/experimental/allocator/mallocator.d#L63-L65

Looking at Mallocator, the use of 'shared' doesn't seem correct to me.

The logic stated in the comment above is that 'malloc' is thread safe, and therefore all methods of Mallocator can be qualified with 'shared'.

I thought that qualifying a method as 'shared' meant that it _can_ touch shared memory, and is therefore _not_ thread safe.


The following program produces this error:
"Error: shared method Mallocator.allocate is not callable using a non-shared object"

import std.experimental.allocator.mallocator;

int main(string[] argv) {
    Mallocator m;
    m.allocate(64);
    return 0;
}

And the above error is because it would be un(thread)safe to call those methods from a non-shared context, due to the fact that they may access shared memory.

Am I wrong here?

Reply via email to