Why do core.atomic functions require shared
Boris-Barboris
ismailsiege at gmail.com
Wed Jul 4 12:33:04 UTC 2018
On Wednesday, 4 July 2018 at 10:47:12 UTC, Jonathan M Davis wrote:
> At this point, to operate on anything that's shared, either
> means using atomics or protecting the data with a mutex (be
> that with a synchronized block / function or a mutex object)
> and temporarily casting away shared while operating on the
> data. Afterwards, the mutex is released, and at that point,
> there should just be only shared references to the data. About
> the only time that operating directly on a shared object then
> makes sense is when it manages the atomics or mutex and
> associated cast internally.
Good overview. Some syntactic sugar should ease the casting pain,
because it's the casting that I dislike the most, especially wheh
shared has to be casted away from multiple unrelated entities
guarded by one mutex chain or some high-level synchronization
rule, unknown to the compiler. If there would be a construct that
does not involve additional line of code and explicit type
specification (or some typeof + Unqual shenanigans), I would
probably have no problem with this approach. Currently, the
casting seems to be the correct way, and it's far from
user-friendly. Maybe such thing should not be a cast at all, and
some kind of built-in property, idk.
More information about the Digitalmars-d
mailing list