Shared - Another Thread

Manu turkeyman at gmail.com
Sat Oct 20 17:47:24 UTC 2018


On Sat., 20 Oct. 2018, 7:00 am Stanislav Blinov via Digitalmars-d, <
digitalmars-d at puremagic.com> wrote:

> On Saturday, 20 October 2018 at 02:09:56 UTC, Dominikus Dittes
> Scherkl wrote:
> > On Saturday, 20 October 2018 at 00:46:36 UTC, Nicholas Wilson
> > wrote:
> >> Mutable = value may change
> >> const = I will not change the value
> >> immutable = the value will not change
> >>
> >> unshared = I (well the current thread) owns the reference
> >> shared = reference not owned, no unordered access, no
> >> (unordered) writes
> >> threadsafe = ???
> > unshared = the current thread owns the reference
> > threadsafe = I guarantee no race conditions or deadlocks will
> > occur
> > shared = every thread may have references
>
> Exactly, "thredsafe" in nothing more than a contract between
> programmers.
> When you have "const" data, it is trivial for the compiler to
> enforce that: it just doesn't allow you to mutate it. But the
> compiler cannot reason about whether your logic is "threadsafe"
> or not, there can be no static enforcement of "thread-safety". It
> only holds as an implicit contract between programmers: the
> authors of data and functions, and the users of that data and
> functions, i.e. the API and the callers.
>

Only at the level of the trusted functions.
It is *very* easy to write a correct Atomic implementation. Queues and
stuff are well understood and have great reference implementations. If you
don't write @trusted functions (most wouldn't!), then you can't mess up.

>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20181020/6a5de99a/attachment.html>


More information about the Digitalmars-d mailing list