OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/thread_pool.h" | 5 #include "vm/thread_pool.h" |
6 | 6 |
7 #include "vm/flags.h" | 7 #include "vm/flags.h" |
8 #include "vm/lockers.h" | 8 #include "vm/lockers.h" |
9 | 9 |
10 namespace dart { | 10 namespace dart { |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 void ThreadPool::Worker::Shutdown() { | 411 void ThreadPool::Worker::Shutdown() { |
412 MonitorLocker ml(&monitor_); | 412 MonitorLocker ml(&monitor_); |
413 done_ = true; | 413 done_ = true; |
414 ml.Notify(); | 414 ml.Notify(); |
415 } | 415 } |
416 | 416 |
417 | 417 |
418 // static | 418 // static |
419 void ThreadPool::Worker::Main(uword args) { | 419 void ThreadPool::Worker::Main(uword args) { |
420 Thread::EnsureInit(); | 420 Thread::EnsureInit(); |
| 421 Thread* thread = Thread::Current(); |
| 422 thread->set_name("Dart ThreadPool Worker"); |
421 Worker* worker = reinterpret_cast<Worker*>(args); | 423 Worker* worker = reinterpret_cast<Worker*>(args); |
422 ThreadId id = OSThread::GetCurrentThreadId(); | 424 ThreadId id = OSThread::GetCurrentThreadId(); |
423 ThreadJoinId join_id = OSThread::GetCurrentThreadJoinId(); | 425 ThreadJoinId join_id = OSThread::GetCurrentThreadJoinId(); |
424 ThreadPool* pool; | 426 ThreadPool* pool; |
425 | 427 |
426 { | 428 { |
427 MonitorLocker ml(&worker->monitor_); | 429 MonitorLocker ml(&worker->monitor_); |
428 ASSERT(worker->task_); | 430 ASSERT(worker->task_); |
429 worker->id_ = id; | 431 worker->id_ = id; |
430 pool = worker->pool_; | 432 pool = worker->pool_; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 // is not due to a ThreadPool Shutdown. Thus, we simply delete the worker. | 469 // is not due to a ThreadPool Shutdown. Thus, we simply delete the worker. |
468 // The worker's id is added to the thread pool's join list by | 470 // The worker's id is added to the thread pool's join list by |
469 // ReleaseIdleWorker, so in the case that the thread pool begins shutting | 471 // ReleaseIdleWorker, so in the case that the thread pool begins shutting |
470 // down immediately after returning from worker->Loop() above, we still | 472 // down immediately after returning from worker->Loop() above, we still |
471 // wait for the thread to exit by joining on it in Shutdown(). | 473 // wait for the thread to exit by joining on it in Shutdown(). |
472 delete worker; | 474 delete worker; |
473 } | 475 } |
474 } | 476 } |
475 | 477 |
476 } // namespace dart | 478 } // namespace dart |
OLD | NEW |