C++ API Reference
MThreadPool Class Reference

Methods for creating and managing a thread pool. More...

#include <MThreadPool.h>

Static Public Member Functions

static MStatus init ()
 Initialize thread pool creation. More...
 
static MStatus newParallelRegion (MThreadCallbackFunc func, void *data)
 Creates a new parallel region. More...
 
static MStatus createTask (MThreadFunc func, void *data, MThreadRootTask *root)
 Add a single task to the parallel region. More...
 
static MStatus executeAndJoin (MThreadRootTask *root)
 Run all tasks in the present parallel region to completion. More...
 
static void release ()
 Release decreases the reference count on the thread pool. More...
 
static const char * className ()
 Returns the name of this class. More...
 

Detailed Description

Methods for creating and managing a thread pool.

MThreadPool class. The thread pool is created with a number of threads equal to one less than the number of logical processors.

Member Function Documentation

OPENMAYA_MAJOR_NAMESPACE_OPEN MStatus init ( )
static

Initialize thread pool creation.

No threads are created by this call.

Returns
  • MS::kSuccess The method was successful.
  • MS::kInsufficientMemory Insufficient memory to complete this method
Examples:
threadTestCmd/threadTestCmd.cpp, and threadTestWithLocksCmd/threadTestWithLocksCmd.cpp.
MStatus newParallelRegion ( MThreadCallbackFunc  func,
void *  data 
)
static

Creates a new parallel region.

All tasks created by createTask() will be added to this region. init() must be called to create the thread pool before calling this function.

Parameters
[in]funcpointer to function to be executed by threads
[in]datadata for function
Returns
  • MS::kSuccess The method was successful.
  • MS::kFailure Thread pool does not exist
Examples:
threadTestCmd/threadTestCmd.cpp, and threadTestWithLocksCmd/threadTestWithLocksCmd.cpp.
MStatus createTask ( MThreadFunc  func,
void *  data,
MThreadRootTask *  root 
)
static

Add a single task to the parallel region.

The parallel region must already have been created by calling newParallelRegion.

Parameters
[in]funcpointer to function to be executed by threads
[in]datadata for function
[in]rootroot task
Returns
  • MS::kSuccess The method was successful.
  • MS::kFailure Thread pool does not exist
Examples:
threadTestCmd/threadTestCmd.cpp, and threadTestWithLocksCmd/threadTestWithLocksCmd.cpp.
MStatus executeAndJoin ( MThreadRootTask *  root)
static

Run all tasks in the present parallel region to completion.

This function must be called from within a function invoked by the method newParallelRegion.

Parameters
[in]roottask to execute
Returns
  • MS::kSuccess The method was successful.
  • MS::kFailure Thread pool does not exist
Examples:
threadTestCmd/threadTestCmd.cpp, and threadTestWithLocksCmd/threadTestWithLocksCmd.cpp.
void release ( )
static

Release decreases the reference count on the thread pool.

When the reference count reaches zero the thread pool is deleted.

Examples:
threadTestCmd/threadTestCmd.cpp, and threadTestWithLocksCmd/threadTestWithLocksCmd.cpp.
const char * className ( )
static

Returns the name of this class.

Returns
The name of this class.

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