Synchronized classes have no public members
Ola Fosheim Grøstad via Digitalmars-d
digitalmars-d at puremagic.com
Tue Oct 13 12:31:08 PDT 2015
On Tuesday, 13 October 2015 at 18:27:43 UTC, Jonathan M Davis
wrote:
> they should be creating multiple mutexes. Having a single mutex
> for a class is usually overly broad - regardless of whether all
> of the functions in a class are synchronized or only select
> ones are. And when you _do_ use a single mutex for an entire
> class, I've found that it's often the case that the mutex
Monitor classes is a high level convenience feature that one has
to put work into if it is to be good. It is however much less
error prone than mutexes and semaphores.
The point is that you create a robust encapsulated facade and
only weaken the facade after static analysis has proven that
locks are superfluous. Doing this manually is error prone.
One can also add high level concurrency mechanisms like
guarantees for obtaining a set of resources before obtaining the
lock, e.g. the caller supplies a predicate like "user Eric and
user Lisa is available" and is suspended until the predicate is
satisfiable.
But it needs more high level features than D has today.
More information about the Digitalmars-d
mailing list