Matt Wrote: > Matt Wrote: > > > Is there some way to cast shared to thread local when a local has been > > acquired? > > It occurs to me that your plan is probably: with an explicit cast when the > lock is acquired. So in practice 'unshared' is really going to mean > something more like 'exclusively owned' and these modifiers aren't really > going to help with managing what data is actually thread local vs. in the > global heap. The purpose of the 'shared' annotation is then just to warn you > about unlocked data and to serve a similar purpose as 'volatile' for code > generation. > > Is this about right?
I don't think so. What happens when the lock is released? Any residual use of the cast data is going to be incorrect (lacks a lock). What that means is that the cast is unsafe even when the data is locked! Casting is a back door that should be used with extreme care.
