Poco

class TaskManager

Library: Foundation
Package: Tasks
Header: Poco/TaskManager.h

Description

The TaskManager manages a collection of tasks and monitors their lifetime.

A TaskManager has a built-in NotificationCenter that is used to send out notifications on task progress and task states. See the TaskNotification class and its subclasses for the various events that result in a notification. To keep the number of notifications small, a TaskProgressNotification will only be sent out once in 100 milliseconds.

Member Summary

Member Functions: addObserver, cancelAll, count, joinAll, postNotification, removeObserver, start, taskCancelled, taskFailed, taskFinished, taskList, taskProgress, taskStarted

Types Aliases

TaskList

using TaskList = std::list < TaskPtr >;

TaskPtr

using TaskPtr = AutoPtr < Task >;

Constructors

TaskManager

TaskManager(
    ThreadPool & pool
);

Creates the TaskManager, using the given ThreadPool (should be used by this TaskManager exclusively).

TaskManager

TaskManager(
    const std::string & name = "",
    int minCapacity = 2,
    int maxCapacity = 16,
    int idleTime = 60,
    int stackSize = 0
);

Creates the TaskManager.

Destructor

~TaskManager

~TaskManager();

Destroys the TaskManager.

Member Functions

addObserver

void addObserver(
    const AbstractObserver & observer
);

Registers an observer with the NotificationCenter. Usage:

Observer<MyClass, MyNotification> obs(*this, &MyClass::handleNotification);
notificationCenter.addObserver(obs);

cancelAll

void cancelAll();

Requests cancellation of all tasks.

count inline

int count() const;

Returns the number of tasks in the internal task list.

joinAll

void joinAll();

Waits for the completion of all the threads in the TaskManager's thread pool.

Note: joinAll() will wait for ALL tasks in the TaskManager's ThreadPool to complete. If the ThreadPool has threads created by other facilities, these threads must also complete before joinAll() can return.

removeObserver

void removeObserver(
    const AbstractObserver & observer
);

Unregisters an observer with the NotificationCenter.

start

bool start(
    Task * pTask
);

Starts the given task in a thread obtained from the thread pool; returns true if successful.

If this method returns false, the task was cancelled before it could be started, or it was already running; in any case, a false return means refusal of ownership and indicates that the task pointer may not be valid anymore (it will only be valid if it was duplicated prior to this call).

The TaskManager takes ownership of the Task object and deletes it when it is finished.

taskList

TaskList taskList() const;

Returns a copy of the internal task list.

postNotification protected

void postNotification(
    const Notification::Ptr & pNf
);

Posts a notification to the task manager's notification center.

taskCancelled protected

void taskCancelled(
    Task * pTask
);

taskFailed protected

void taskFailed(
    Task * pTask,
    const Exception & exc
);

taskFinished protected

void taskFinished(
    Task * pTask
);

taskProgress protected

void taskProgress(
    Task * pTask,
    float progress
);

taskStarted protected

void taskStarted(
    Task * pTask
);

Variables

MIN_PROGRESS_NOTIFICATION_INTERVAL static

static const int MIN_PROGRESS_NOTIFICATION_INTERVAL;