Merge pull request #2943 from MartinNowak/useInitOnce

use initOnce for lazy shared initialization
This commit is contained in:
Dmitry Olshansky 2015-06-26 20:51:14 +03:00
commit bcedffd0ee
3 changed files with 18 additions and 44 deletions

View file

@ -3273,24 +3273,13 @@ terminating the main thread.
*/
@property TaskPool taskPool() @trusted
{
static bool initialized;
__gshared static TaskPool pool;
if(!initialized)
{
synchronized(typeid(TaskPool))
{
if(!pool)
{
pool = new TaskPool(defaultPoolThreads);
pool.isDaemon = true;
}
}
initialized = true;
}
return pool;
import std.concurrency : initOnce;
__gshared TaskPool pool;
return initOnce!pool({
auto p = new TaskPool(defaultPoolThreads);
p.isDaemon = true;
return p;
}());
}
private shared uint _defaultPoolThreads;