diff options
Diffstat (limited to 'runtime/thread_pool.h')
| -rw-r--r-- | runtime/thread_pool.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/runtime/thread_pool.h b/runtime/thread_pool.h index 7ecfcd1289..a465e11055 100644 --- a/runtime/thread_pool.h +++ b/runtime/thread_pool.h @@ -105,11 +105,17 @@ class ThreadPool { // Remove all tasks in the queue. void RemoveAllTasks(Thread* self) REQUIRES(!task_queue_lock_); - ThreadPool(const char* name, size_t num_threads); + // Create a named thread pool with the given number of threads. + // + // If create_peers is true, all worker threads will have a Java peer object. Note that if the + // pool is asked to do work on the current thread (see Wait), a peer may not be available. Wait + // will conservatively abort if create_peers and do_work are true. + ThreadPool(const char* name, size_t num_threads, bool create_peers = false); virtual ~ThreadPool(); // Wait for all tasks currently on queue to get completed. If the pool has been stopped, only // wait till all already running tasks are done. + // When the pool was created with peers for workers, do_work must not be true (see ThreadPool()). void Wait(Thread* self, bool do_work, bool may_hold_locks) REQUIRES(!task_queue_lock_); size_t GetTaskCount(Thread* self) REQUIRES(!task_queue_lock_); @@ -159,6 +165,7 @@ class ThreadPool { uint64_t total_wait_time_; Barrier creation_barier_; size_t max_active_workers_ GUARDED_BY(task_queue_lock_); + const bool create_peers_; private: friend class ThreadPoolWorker; |