Shared an non-shared
Begah via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Oct 5 14:10:01 PDT 2016
On Wednesday, 5 October 2016 at 12:48:07 UTC, Jonathan M Davis
wrote:
> On Wednesday, October 05, 2016 11:25:57 Begah via
> Digitalmars-d-learn wrote:
>> [...]
>
> Unless you're writing lock-free algorithms (which really should
> only be done by experts, and even then, they should probably
> reconsider it, since they're so insanely hard to get right),
> _every_ variable/object that's going to be accessible from
> multiple threads needs to be protected by a mutex so that it's
> guaranteed that only one thread accesses the object at a time.
> That would be just as true in C/C++ as it is in D. It's just
> that D requires that they be marked as shared. That being said,
> how many objects should be protected by a given mutex depends
> entirely on what you're doing. In some cases, it makes sense to
> protect a lot of objects with the same mutex (e.g. all of the
> member variables of a class could be protected with a single
> mutex, which is what would happen with synchronized
> functions/classes), and in other cases, it makes sense to have
> as many as a mutex per variable. Having fewer mutexes is easier
> to handle, but it can also mean that code gets blocked waiting
> more. And of course, in some cases, the state in question is
> really spread across multiple variables, and they all need to
> be protected together. I really can't judge how many mutexes
> would be needed without knowing what you're doing.
>
> [...]
Thanks,
Although the triple buffer seems a good idea, there is one
problem.
I will need three time as much ram than what i currently need.
Not to mention, every time i switch buffer i will need to copy
all changes made to the updated buffer to the next buffer to be
updated (Which i think, doing it a few hundred times a second
might become a bottleneck ).
More information about the Digitalmars-d-learn
mailing list