Thin Lock Implementation

Steven Schveighoffer schveiguy at yahoo.com
Tue Aug 19 08:25:45 PDT 2008


"Steven Schveighoffer" wrote
> "Bartosz Milewski" wrote
>>I posted some implementation details of Thin Lock in my blog, 
>>http://bartoszmilewski.wordpress.com/ . I would appreciate comments.
>>
>> And by the way, I put it on reddit too: 
>> http://www.reddit.com/comments/6wmq4/thin_lock_implementation/ .
>>
>
> This looks a lot more promising than the original concept that Walter 
> linked to :)
>
> There is mention of casting away shared which throws an exception if the 
> object isn't shared.  Is this the locking mechanism to both read and write 
> data?  i.e. you have to cast away sharing to use the data, then cast it 
> back to unshared?  How do you wait for an object to be available so you 
> can unshare it?
>
> What happens if you forget to uncast it?
>
> What happens to subcomponents?  i.e. shared is supposed to be transitive, 
> right?  So if you cast away shared in the top-level object, does that go 
> and try unsharing all the objects referenced by it (i.e. setting all the 
> currently shared bits to 0)?  If not, then how do you know that the 
> subobjects are shared in the type system?  It looks like a lot of this is 
> going to be runtime checks, or is there going to be another type modifier 
> for 'created shared, but currently unshared', i.e. 'locked' or something?
>
> Cool stuff, I think you are on the right track.
>

Reading further messages in your blog, I see that you expect sharing casts 
to be recursive (to preserve the transitive nature of it).  What if two 
shared objects have references to the same shared object?  If you 'unshare' 
one parent, the other object now is shared, but its subcomponent is not 
shared.  Is that considered ok?

-Steve 





More information about the Digitalmars-d mailing list