On Thursday, 3 May 2012 at 13:40:41 UTC, Steven Schveighoffer
wrote:
On Wed, 02 May 2012 12:59:34 -0400, David Nadlinger
<[email protected]> wrote:
Additionally, shared is currently little more than a marker
for non-TLS data.
No, it's very important that it is a type constructor. For
example, it makes weak-pure functions possible.
I think there is a large piece of shared missing/undefined, and
that is, how do I mark something shared as "temporarily local".
I think Bartosz proposed something like "lent".
We essentially need the equivalent of const for shared. Const
unifies immutable and mutable, we need something to unify
shared and thread-local.
The problem is, something like this needs to be combined with
thread-locks. I wonder if some kind of ARC would be useful for
automatically unlocking the data.
Yes, it is important indeed, at least if we want the type system
to give guarantees about multi-threaded code. I just meant that
in the current state, it provides little more than a way to make
sure that shared data isn't accidentally passed around/used in
places where synchronization isn't properly handled, because none
of the fancier related ideas have actually been implemented so
far.
David