| Note on Use | 
|---|
| Modules used exclusively in a uniprocessor environment do not require any of the routines described in this section. However, modules that use these routines on a parallel processor can also be run on a uniprocessor without changing any code. | 
Task Groups constitute a mechanism for specifying a collection of tasks to be performed in parallel on a multiprocessor. The task model provides simple fork/join semantics, suitable for coarse-grain parallelism:
| Notes on Use | 
|---|
| 
 | 
| Error DXCreateTaskGroup() | Starts a new Group of tasks to be run in parallel. See DXCreateTaskGroup. | 
| Error DXAddTask() | Adds a task to be run later, in parallel if possible. See DXAddTask. | 
| Error DXAbortTaskGroup() | Aborts a task group without executing it. See DXAbortTaskGroup. | 
| Error DXExecuteTaskGroup() | Runs the Group of tasks in the current Group in parallel, if possible. See DXExecuteTaskGroup. | 
| int DXProcessors() | Returns the number of processors. See DXProcessors. | 
| int DXProcessorId() | Returns the current processor identifier. See DXProcessorId. |