struct CCL::Threading::IThreadPool

Overview

#include <ithreadpool.h>

struct IThreadPool: public CCL::IUnknown
{
    // methods

    virtual int CCL_API getMaxThreadCount () const = 0;
    virtual int CCL_API getActiveThreadCount () const = 0;
    virtual void CCL_API allocateThreads (int minCount) = 0;
    virtual void CCL_API scheduleWork (IWorkItem* item) = 0;
    virtual void CCL_API cancelWork (WorkID id, tbool force = false) = 0;
    virtual void CCL_API cancelAll () = 0;
    virtual void CCL_API addPeriodic (IPeriodicItem* item) = 0;
    virtual void CCL_API removePeriodic (IPeriodicItem* item) = 0;
    virtual void CCL_API reduceThreads (tbool force = false) = 0;
    virtual void CCL_API terminate () = 0;
};

Inherited Members

public:
    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;

Detailed Documentation

Methods

virtual int CCL_API getMaxThreadCount () const = 0

Get maximum number of threads working simultaneously.

virtual int CCL_API getActiveThreadCount () const = 0

Get number of threads currently active.

virtual void CCL_API allocateThreads (int minCount) = 0

Set the minimum number of threads available and allocate them if neccessary.

virtual void CCL_API scheduleWork (IWorkItem* item) = 0

Schedule work item (pool takes ownership).

virtual void CCL_API cancelWork (WorkID id, tbool force = false) = 0

Cancel an already scheduled work item.

virtual void CCL_API cancelAll () = 0

Cancel all scheduled work items.

virtual void CCL_API addPeriodic (IPeriodicItem* item) = 0

Add item to be executed periodically.

virtual void CCL_API removePeriodic (IPeriodicItem* item) = 0

Cancel periodic item.

virtual void CCL_API reduceThreads (tbool force = false) = 0

Try to reduce number of active threads if idle for while.

virtual void CCL_API terminate () = 0

Exit all threads and cleanup.