Interesting PRs: bringing type system legitimacy to shared allocators

Stanislav Blinov via Digitalmars-d digitalmars-d at puremagic.com
Mon May 1 03:17:50 PDT 2017


On Monday, 1 May 2017 at 04:54:28 UTC, Andrei Alexandrescu wrote:
> On 4/30/17 8:43 PM, Stanislav Blinov wrote:
>> On Sunday, 30 April 2017 at 21:43:26 UTC, Andrei Alexandrescu 
>> wrote:
>>> On 04/27/2017 07:35 PM, Stanislav Blinov wrote:
>>>> IAllocator is too high level an interface, it doesn't carry 
>>>> any
>>>> information as to what type of memory it can allocate (so we 
>>>> can only
>>>> assume unshared), and does or does it not use GC (so we can 
>>>> only assume
>>>> GC).
>>>
>>> Initially all fresh memory is unshared. Whether or not the 
>>> user subsequently shares it is of no consequence to the 
>>> allocator.
>> 
>> Why would we need any ISharedAllocator then?
>
> The allocator itself may be shared across threads...

But it is no different in case of memory. Allocator that 
allocates shared memory should either return shared(void)[] or 
have an explicit interface (allocateShared et al.), not just have 
the  "you may cast result of allocate() to shared" somewhere in 
the docs. We should let the language do the work it can, not send 
us to RTFM. Hence my earlier statement that more interfaces are 
needed, as one possible (albeit not pretty) solution.



More information about the Digitalmars-d mailing list