On Oct 18, 2012, at 11:48 AM, Jacob Carlborg <[email protected]> wrote:

> On 2012-10-18 20:26, Sean Kelly wrote:
> 
>> Well, the problem is more that a variable can be cast to shared after 
>> instantiation, so to allow thread-local collections we'd have to make 
>> cast(shared) set a flag on the memory block to indicate that it's shared, 
>> and vice-versa for unshared.  Then when a thread terminates, all blocks not 
>> flagged as shared would be finalized, leaving the shared blocks alone.  Then 
>> any pool from the terminated thread containing a shared block would have to 
>> be merged into the global heap instead of released to the OS.
> 
> Or move the shared data to the global heap when it's casted. Don't know 
> that's best. This way all data in a give pool will be truly thread local.

And back down to a local pool when shared is cast away.  Assuming the block is 
even movable.  I agree that this would be the most efficient use of memory, but 
I don't know that it's feasible.

Reply via email to