| Index: src/libplatform/default-platform.cc
|
| diff --git a/src/libplatform/default-platform.cc b/src/libplatform/default-platform.cc
|
| index f05dc1107a0d5f1e7bbac104b91f703715587ccb..72e6002c3f939551c6d2de7be125872d97c4acd9 100644
|
| --- a/src/libplatform/default-platform.cc
|
| +++ b/src/libplatform/default-platform.cc
|
| @@ -40,7 +40,7 @@ namespace internal {
|
|
|
|
|
| DefaultPlatform::DefaultPlatform()
|
| - : initialized_(false) {}
|
| + : initialized_(false), thread_pool_size_(0) {}
|
|
|
|
|
| DefaultPlatform::~DefaultPlatform() {
|
| @@ -58,24 +58,24 @@ DefaultPlatform::~DefaultPlatform() {
|
| void DefaultPlatform::SetThreadPoolSize(int thread_pool_size) {
|
| LockGuard<Mutex> guard(&lock_);
|
| ASSERT(thread_pool_size >= 0);
|
| - if (initialized_) return;
|
| - initialized_ = true;
|
| if (thread_pool_size < 1)
|
| thread_pool_size = CPU::NumberOfProcessorsOnline();
|
| - thread_pool_size = Max(Min(thread_pool_size, kMaxThreadPoolSize), 1);
|
| + thread_pool_size_ = Max(Min(thread_pool_size, kMaxThreadPoolSize), 1);
|
| +}
|
|
|
| - for (int i = 0; i < thread_pool_size; ++i)
|
| +
|
| +void DefaultPlatform::EnsureInitialized() {
|
| + LockGuard<Mutex> guard(&lock_);
|
| + if (initialized_) return;
|
| + initialized_ = true;
|
| +
|
| + for (int i = 0; i < thread_pool_size_; ++i)
|
| thread_pool_.push_back(new WorkerThread(&queue_));
|
| }
|
|
|
| void DefaultPlatform::CallOnBackgroundThread(Task *task,
|
| ExpectedRuntime expected_runtime) {
|
| -#ifdef DEBUG
|
| - {
|
| - LockGuard<Mutex> guard(&lock_);
|
| - ASSERT(initialized_);
|
| - }
|
| -#endif
|
| + EnsureInitialized();
|
| queue_.Append(task);
|
| }
|
|
|
|
|