You could use the existing hardware memory protection mechanism, if you can do that per-thread. Each thread allocates into memory protected from other threads by default, and on a page fault caused by access from another thread it&#x27;s then moved into shared memory, and converted to concurrent if needed.<p>You could then profile allocation sites so that if a map is frequently converted to concurrent, you then start allocating it as concurrent in the first place.