Make pool initialization atomic
An instance of pool is created per thread and it stores a reference to the current pool values. When the pool is initialized, a temporary reference is set on the instance so only the values for this thread is modified. Once the initialization is complete, the new pool value replace the global values. Each instances is refreshed with the global values after the pool has been stopped.
Closes #11401 (closed)