On Oct 18, 2012, at 12:22 PM, Jacob Carlborg <[email protected]> wrote: > On 2012-10-18 20:54, Sean Kelly wrote: > >> 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. > > You said the thread local heap would be merged with the global on thread > termination. How is that different? > > Alternative it could stay in the global heap. I mean, not many variables > should be "shared" and even fewer should be casted back and forth.
It's different in that a variable's address never actually changes. When a thread completes it hands all of its pools to the shared allocator, and then per-thread allocators request free pools from the shared allocator before going to the OS. This is basically how the HOARD allocator works.
