---
name: "sc_ThreadGrp"
section: "3"
platform: "linux"
package: "libsc-doc"
version: "2.3.1-22"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/sc_ThreadGrp"
---

# sc\_ThreadGrp(3)

The ThreadGrp abstract class provides a means to manage separate threads of control.

## NAME

sc::ThreadGrp - The **ThreadGrp** abstract class provides a means to manage separate threads of control.

## SYNOPSIS

`#include <thread.h>`

Inherits **sc::DescribedClass**.

Inherited by **sc::ProcThreadGrp**, **sc::PthreadThreadGrp**, and **sc::PumaThreadGrp**.

### Public Member Functions

**ThreadGrp** (const **Ref**\< **KeyVal** \> &)\
 **ThreadGrp** (const **ThreadGrp** &, int **nthread**=-1)\
 virtual void **add\_thread** (int threadnum, **Thread** \*thread)\
 Assigns a **Thread** object to each thread.  virtual void **add\_thread** (int threadnum, **Thread** \*thread, int priority)\
 Like add\_thread(threadnum, thread), but assign a priority that the thread is to use.  int **nthread** () const\
 The number of threads that will be run by start\_thread.  void **delete\_threads** ()\
 virtual int **start\_threads** ()=0\
 Starts the threads running.  virtual int **wait\_threads** ()=0\
 Wait for all the threads to complete.  virtual **Ref**\< **ThreadLock** \> **new\_lock** ()=0\
 Return a local object.  virtual **ThreadGrp** \* **clone** (int **nthread**=-1)\
 Create a **ThreadGrp** like the current one.

### Static Public Member Functions

static void **set\_default\_threadgrp** (const **Ref**\< **ThreadGrp** \> &)\
 static **ThreadGrp** \* **get\_default\_threadgrp** ()\
 static **ThreadGrp** \* **initial\_threadgrp** (int &argc, char \*\*argv)\

### Protected Attributes

**Thread** \*\* **threads\_**\
 int **nthread\_**\

### Additional Inherited Members

## Detailed Description

The **ThreadGrp** abstract class provides a means to manage separate threads of control.

## Member Function Documentation

### virtual void sc::ThreadGrp::add\_thread (int threadnum, Thread \* thread)` [virtual]`

Assigns a **Thread** object to each thread. If 0 is assigned to a thread, then that thread will be skipped.

Reimplemented in **sc::PthreadThreadGrp**.

Referenced by **sc::PthreadThreadGrp::add\_thread()**.

### virtual void sc::ThreadGrp::add\_thread (int threadnum, Thread \* thread, int priority)` [virtual]`

Like add\_thread(threadnum, thread), but assign a priority that the thread is to use. The member is primarily for experimentation, the priority argument is currently not well defined and ignored. \

Reimplemented in **sc::PthreadThreadGrp**.

### virtual ThreadGrp \* sc::ThreadGrp::clone (int nthread = `-1`)` [virtual]`

Create a **ThreadGrp** like the current one. If nthread is given, the new **ThreadGrp** will attempt to support that number of threads, but the actual number supported may be less. If nthread is -1, the number of threads in the current group will be used.

Reimplemented in **sc::PthreadThreadGrp**, and **sc::ProcThreadGrp**.

### virtual Ref\< ThreadLock \> sc::ThreadGrp::new\_lock ()` [pure virtual]`

Return a local object.

Implemented in **sc::PthreadThreadGrp**, **sc::PumaThreadGrp**, and **sc::ProcThreadGrp**.

### virtual int sc::ThreadGrp::start\_threads ()` [pure virtual]`

Starts the threads running. **Thread** 0 will be run by the thread that calls start\_threads.

Implemented in **sc::PthreadThreadGrp**, **sc::PumaThreadGrp**, and **sc::ProcThreadGrp**.

### virtual int sc::ThreadGrp::wait\_threads ()` [pure virtual]`

Wait for all the threads to complete. This must be called before start\_threads is called again or the object is destroyed.

Implemented in **sc::PthreadThreadGrp**, **sc::PumaThreadGrp**, and **sc::ProcThreadGrp**.

## Author

Generated automatically by Doxygen for MPQC from the source code.
