MPQC
3.0.0-alpha
|
The ThreadGrp abstract class provides a means to manage separate threads of control. More...
#include <util/group/thread.h>
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< ThreadLock > | new_lock ()=0 |
Return a local object. | |
virtual ThreadGrp * | clone (int nthread=-1) |
Create a ThreadGrp like the current one. More... | |
Public Member Functions inherited from sc::DescribedClass | |
DescribedClass (const DescribedClass &) | |
DescribedClass & | operator= (const DescribedClass &) |
ClassDesc * | class_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< DescribedClass > | ref () |
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 ThreadGrp * | get_default_threadgrp () |
Returns the default ThreadGrp. More... | |
static ThreadGrp * | initial_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 &) | |
RefCount & | operator= (const RefCount &) |
The ThreadGrp abstract class provides a means to manage separate threads of control.
|
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 |
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 |
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.
|
static |
|
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.
Sets the default ThreadGrp.
This will be returned by future calls to get_default_threadgrp.
|
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.
|
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.