Couldn't say myself, without trying it. I know some modes of parallel processing take memory copy-on-write, and others don't. I'm pretty sure the Unix 'fork' does that, for example. I've never had occasion to check whether threads do too.
It may not be viable, but depending on frequency of reading array, you might find you can have a 'handler' thread, that services requests for data from the hash
Otherwise - your code is all about initially creating the hash. How does it perform once that's finished? It may be worth the overhead.