MPQC  3.0.0-alpha
sc::ThreadGrp Class Referenceabstract

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

#include <util/group/thread.h>

Inheritance diagram for sc::ThreadGrp:
sc::DescribedClass sc::RefCount sc::ProcThreadGrp sc::PthreadThreadGrp 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. More...
 
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. More...
 
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. More...
 
virtual int wait_threads ()=0
 Wait for all the threads to complete. More...
 
virtual Ref< ThreadLocknew_lock ()=0
 Return a local object.
 
virtual ThreadGrpclone (int nthread=-1)
 Create a ThreadGrp like the current one. More...
 
- Public Member Functions inherited from sc::DescribedClass
 DescribedClass (const DescribedClass &)
 
DescribedClassoperator= (const DescribedClass &)
 
ClassDescclass_desc () const MPQC__NOEXCEPT
 This returns the unique pointer to the ClassDesc corresponding to the given type_info object. More...
 
const char * class_name () const
 Return the name of the object's exact type.
 
int class_version () const
 Return the version of the class.
 
virtual void print (std::ostream &=ExEnv::out0()) const
 Print the object.
 
Ref< DescribedClassref ()
 Return this object wrapped up in a Ref smart pointer. More...
 
- Public Member Functions inherited from sc::RefCount
size_t identifier () const
 Return the unique identifier for this object that can be compared for different objects of different types. More...
 
int lock_ptr () const
 Lock this object.
 
int unlock_ptr () const
 Unlock this object.
 
void use_locks (bool inVal)
 start and stop using locks on this object
 
refcount_t nreference () const
 Return the reference count.
 
refcount_t reference ()
 Increment the reference count and return the new count.
 
refcount_t dereference ()
 Decrement the reference count and return the new count.
 
int managed () const
 
void unmanage ()
 Turn off the reference counting mechanism for this object. More...
 

Static Public Member Functions

static void set_default_threadgrp (const Ref< ThreadGrp > &)
 Sets the default ThreadGrp. More...
 
static ThreadGrpget_default_threadgrp ()
 Returns the default ThreadGrp. More...
 
static ThreadGrpinitial_threadgrp (int &argc, char **argv)
 Create a ThreadGrp. More...
 

Protected Attributes

Thread ** threads_
 
int nthread_
 

Additional Inherited Members

- Protected Member Functions inherited from sc::RefCount
 RefCount (const RefCount &)
 
RefCountoperator= (const RefCount &)
 

Detailed Description

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

Member Function Documentation

◆ add_thread() [1/2]

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().

◆ add_thread() [2/2]

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.

◆ clone()

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::ProcThreadGrp, and sc::PthreadThreadGrp.

◆ get_default_threadgrp()

static ThreadGrp* sc::ThreadGrp::get_default_threadgrp ( )
static

Returns the default ThreadGrp.

If set_default_threadgrp has not already been called to set a default, this will construct a new ThreadGrp.

◆ initial_threadgrp()

static ThreadGrp* sc::ThreadGrp::initial_threadgrp ( int &  argc,
char **  argv 
)
static

Create a ThreadGrp.

First, this will determine if the -threadgrp option has been given with argc and argv. If so, then the argument should be ParsedKeyVal input for a ThreadGrp. If the argument is not found, then the THREADGRP environment variable is examined. If found, then its value should be a ParsedKeyVal input for a ThreadGrp. Otherwise null is returned.

◆ set_default_threadgrp()

static void sc::ThreadGrp::set_default_threadgrp ( const Ref< ThreadGrp > &  )
static

Sets the default ThreadGrp.

This will be returned by future calls to get_default_threadgrp.

◆ start_threads()

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::ProcThreadGrp, sc::PthreadThreadGrp, and sc::PumaThreadGrp.

◆ wait_threads()

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::ProcThreadGrp, sc::PthreadThreadGrp, and sc::PumaThreadGrp.


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

Generated at Sun Jan 26 2020 23:24:13 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.