Add a method to wait for all pending items in a ThreadPool.

This commit is contained in:
Daniel Buckmaster 2015-07-05 12:59:16 +10:00
parent 7b2cb8d04f
commit 0995520d6f
2 changed files with 41 additions and 1 deletions

View file

@ -264,6 +264,9 @@ class ThreadPool
/// Number of worker threads guaranteed to be non-blocking.
U32 mNumThreadsReady;
/// Number of work items that have not yet completed execution.
U32 mNumPendingItems;
/// Semaphore used to wake up threads, if necessary.
Semaphore mSemaphore;
@ -316,6 +319,18 @@ class ThreadPool
/// the queue to flush out. -1 = infinite.
void flushWorkItems( S32 timeOut = -1 );
/// If you're using a non-global thread pool to parallelise some work, you
/// may want to block until all the parallel work is complete. As with
/// flushWorkItems, this method may block indefinitely if new items keep
/// getting added to the pool before old ones finish.
///
/// <em>This method will not wait for items queued on the main thread using
/// queueWorkItemOnMainThread!</em>
///
/// @param timeOut Soft limit on the number of milliseconds to wait for
/// all items to complete. -1 = infinite.
void waitForAllItems( S32 timeOut = -1 );
/// Add a work item to the main thread's work queue.
///
/// The main thread's work queue will be processed each frame using