#include <ConcurrentExecutor.h>
Inheritance diagram for ZThread::ConcurrentExecutor:
Public Member Functions | |
ConcurrentExecutor () | |
Create a ConcurrentExecutor. | |
virtual void | interrupt () |
virtual void | execute (const Task &) |
virtual void | cancel () |
virtual bool | isCanceled () |
virtual void | wait () |
virtual bool | wait (unsigned long timeout) |
void ZThread::ConcurrentExecutor::cancel | ( | ) | [virtual] |
void ZThread::ConcurrentExecutor::execute | ( | const Task & | ) | [virtual] |
Submit a Task to this Executor. This will not block the current thread for very long. The task will be enqueued internally and eventually run in the context of the single thread driving all the Tasks submitted to this Executor.
Cancellation_Exception | thrown if this Executor has been canceled. The Task being submitted will not be executed by this Executor. | |
Synchronization_Exception | thrown only in the event of an error in the implementation of the library. |
Implements ZThread::Executor.
void ZThread::ConcurrentExecutor::interrupt | ( | ) | [virtual] |
Interrupting a ConcurrentExecutor will cause the thread running the tasks to be be interrupted once during the execution of each task that has been submitted at the time this function is called.
Tasks that are submitted after this function is called will not be interrupt()ed; unless this function is invoked again().
void aFunction() { ConcurrentExecutor executor; // Submit p Tasks for(size_t n = 0; n < p; n++) executor.execute(new aRunnable); // Tasks [m, p) may be interrupted, where m is the first task that has // not completed at the time the interrupt() is invoked. executor.interrupt(); // Submit (q - p) Tasks for(size_t n = p; n < q; n++) executor.execute(new Chore); // Tasks [p, q) are not interrupted }
Implements ZThread::Executor.
bool ZThread::ConcurrentExecutor::isCanceled | ( | ) | [virtual] |
bool ZThread::ConcurrentExecutor::wait | ( | unsigned long | timeout | ) | [virtual] |
void ZThread::ConcurrentExecutor::wait | ( | ) | [virtual] |