I wish all qualifiers were revisited with an eye for simplification
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Mon Aug 3 01:23:26 UTC 2020
On 8/2/20 6:55 PM, Stefan Koch wrote:
> On Sunday, 2 August 2020 at 20:50:14 UTC, Andrei Alexandrescu wrote:
>> (Background: qualifiers were introduced following my horror when I
>> started writing D1 code and saw that strings are represented as
>> char[]. So structs with string members would look like:
> [lots of stuff]
>
> const inout shared T is simply the same as const shared T.
Sadly no: https://run.dlang.io/is/etdPtP
> shared means simply: this is not thread local,
> therefore this thing might be used by other threads
> therefore you read or write it in an expression directly.
> You can however have a function take a shared argument and leave
> the scheduling or locking or whatever synchronization you use,
> to enact an operation in a safe way.
Yes, the intent was generous. The realization, not quite. However, I did
learn from Walter that a number of invalid operations on shared numerics
have now been disabled. However, copying a shared int into an int is
allowed and as far as I know with no special treatment:
https://run.dlang.io/is/ZP124F
At least on ARM that should generate a read barrier.
More information about the Digitalmars-d
mailing list