LLVM  8.0.1
Classes | Public Member Functions | List of all members
llvm::TaskQueue Class Reference

TaskQueue executes serialized work on a user-defined Thread Pool. More...

#include "llvm/Support/TaskQueue.h"

Public Member Functions

 TaskQueue (ThreadPool &Scheduler)
 Construct a task queue with no work. More...
 
 ~TaskQueue ()
 Blocking destructor: the queue will wait for all work to complete. More...
 
template<typename Callable >
std::future< typename std::result_of< Callable()>::typeasync (Callable &&C)
 Asynchronous submission of a task to the queue. More...
 

Detailed Description

TaskQueue executes serialized work on a user-defined Thread Pool.

It guarantees that if task B is enqueued after task A, task B begins after task A completes and there is no overlap between the two.

Definition at line 35 of file TaskQueue.h.

Constructor & Destructor Documentation

◆ TaskQueue()

llvm::TaskQueue::TaskQueue ( ThreadPool Scheduler)
inline

Construct a task queue with no work.

Definition at line 70 of file TaskQueue.h.

◆ ~TaskQueue()

llvm::TaskQueue::~TaskQueue ( )
inline

Blocking destructor: the queue will wait for all work to complete.

Definition at line 73 of file TaskQueue.h.

References assert(), and Scheduler.

Member Function Documentation

◆ async()

template<typename Callable >
std::future<typename std::result_of<Callable()>::type> llvm::TaskQueue::async ( Callable &&  C)
inline

Asynchronous submission of a task to the queue.

The returned future can be used to wait for the task (and all previous tasks that have not yet completed) to finish.

Definition at line 82 of file TaskQueue.h.

References C, F(), llvm::Lock, and Scheduler.


The documentation for this class was generated from the following file: