I havn't been keeping up on my
threads docs lately, but I seem to remember that shared hashes between threads required some sort of special handling and locking, to be assurred that the hash won't get corrupted. The example
being, what if one thread is removing a primary key from the hash, while another may be trying to write a secondary key to that primary key's descendants.