corelinux::Thread Class Reference

Thread is a framework for the creation, management, and destruction of caller threads. More...

#include <Thread.hpp>

Inheritance diagram for corelinux::Thread:

corelinux::Synchronized

List of all members.

Public Member Functions

 Thread (void) throw ( Assertion )
 Default constructor.
virtual ~Thread (void)
 Virtual destructor.

Static Public Member Functions

static Int getKernelError (void)
 getKernelError returns the thread instance errno for the last kernel call the thread made
static ThreadIdentifier getThreadIdentifier (void)
 getThreadIdentifier retrieves the kernel process id for the caller thread
static ThreadIdentifier getParentThreadIdentifier (void)
 getParentThreadIdentifier retrieves the parent thread of the current thread.
static ThreadIdentifierCref getThreadManagerIdentifier (void)
 getThreadManagerIdentifier retrieves the thread that Thread was instantiated from
static ThreadContextCref getThreadContext (ThreadIdentifierCref) throw ( InvalidThreadException )
 Retrieve a ThreadContext given a identifier.
static Count getCreatedThreadCount (void)
 Retrieve the number of created threads.
static Count getActiveThreadCount (void)
 Retrieve the number of threads that are starting or running.
static Count getBlockedThreadCount (void)
 Retrieve the number of threads that are waiting ro tun.
static Count getCompletedThreadCount (void)
 Retrieve the number of threads that are not starting or running or waiting to run.
static void dump (void)
 Debugging method for the moment.
static ThreadIdentifier startThread (ThreadContextRef)
 Start a thread as described by the context.
static Int waitForThread (ThreadIdentifierCref) throw ( InvalidThreadException )
 Blocks the caller until the thread has ended execution, retrieving the return code from the associated thread context.
static void destroyThreadContext (ThreadIdentifierCref) throw ( InvalidThreadException, Assertion )
 Destroys the managed context for the given identifier.
static Int getThreadPriority (ThreadIdentifierCref) throw ( InvalidThreadException, Assertion )
 Get thread priority for the given indentifier.
static void setThreadPriority (ThreadIdentifierCref, Int) throw ( InvalidThreadException, Assertion )
 Set thread priority for the given indentifier.

Protected Member Functions

 Thread (ThreadCref) throw ( Assertion )
 Copy constructor won't do, its a singleton.
ThreadRef operator= (ThreadCref) throw ( Assertion )
 Assignment operator won't do, we should never get here anyway but the compiler will generate the missing method.
bool operator== (ThreadCref) const throw ( Assertion )
 Equality operator not valid for class utility.

Static Protected Member Functions

static void threadTerminated (Int, VoidPtr, VoidPtr)

Static Protected Attributes

static ThreadManager theThreadManager
 The singleton instance of Thread for synchronization.


Detailed Description

Thread is a framework for the creation, management, and destruction of caller threads.

It accomplishes this by allowing the caller to setup a context for execution and calling their defined entry point. There is still much work to be done such as:


Constructor & Destructor Documentation

corelinux::Thread::Thread ( ThreadCref   )  throw ( Assertion ) [protected]

Copy constructor won't do, its a singleton.

Parameters:
Thread reference to another Thread
Exceptions:
Assertion NEVER_GET_HERE


Member Function Documentation

Int corelinux::Thread::getKernelError ( void   )  [static]

getKernelError returns the thread instance errno for the last kernel call the thread made

Returns:
Int errno for thread function

Referenced by corelinux::SemaphoreGroup::SemaphoreGroup(), corelinux::AbstractSemaphore::setLock(), and startThread().

ThreadIdentifier corelinux::Thread::getThreadIdentifier ( void   )  [static]

ThreadIdentifier corelinux::Thread::getParentThreadIdentifier ( void   )  [static]

getParentThreadIdentifier retrieves the parent thread of the current thread.

Returns:
ThreadIdentifier identifies the parent

ThreadIdentifierCref corelinux::Thread::getThreadManagerIdentifier ( void   )  [static]

getThreadManagerIdentifier retrieves the thread that Thread was instantiated from

Returns:
ThreadIdentifier identifies the owner

ThreadContextCref corelinux::Thread::getThreadContext ( ThreadIdentifierCref  anId  )  throw ( InvalidThreadException ) [static]

Retrieve a ThreadContext given a identifier.

Parameters:
ThreadIdentifier unique id
Returns:
ThreadContext const reference
Exceptions:
InvalidThreadException if it does not exist.

References corelinux::Singleton< TypeImpl >::instance(), and theThreadManager.

Referenced by getThreadPriority(), setThreadPriority(), and waitForThread().

Count corelinux::Thread::getCreatedThreadCount ( void   )  [static]

Retrieve the number of created threads.

Returns:
Count number of active threads

Count corelinux::Thread::getActiveThreadCount ( void   )  [static]

Retrieve the number of threads that are starting or running.

Returns:
Count number of active threads

References corelinux::Singleton< TypeImpl >::instance(), theThreadManager, corelinux::THREAD_RUNNING, and corelinux::THREAD_STARTING.

Count corelinux::Thread::getBlockedThreadCount ( void   )  [static]

Retrieve the number of threads that are waiting ro tun.

Returns:
Count number of active threads

References corelinux::Singleton< TypeImpl >::instance(), theThreadManager, and corelinux::THREAD_WAITING_TO_START.

Count corelinux::Thread::getCompletedThreadCount ( void   )  [static]

Retrieve the number of threads that are not starting or running or waiting to run.

Returns:
Count number of completed threads

References corelinux::Singleton< TypeImpl >::instance(), theThreadManager, and corelinux::THREAD_RUNNING.

ThreadIdentifier corelinux::Thread::startThread ( ThreadContextRef  aContextRef  )  [static]

Int corelinux::Thread::waitForThread ( ThreadIdentifierCref  anId  )  throw ( InvalidThreadException ) [static]

Blocks the caller until the thread has ended execution, retrieving the return code from the associated thread context.

Parameters:
ThreadIdentifier unique thread id
Returns:
Int return code from thread context
Exceptions:
InvalidThreadException if not a valid thread identifier.

References getThreadContext().

void corelinux::Thread::destroyThreadContext ( ThreadIdentifierCref  anId  )  throw ( InvalidThreadException, Assertion ) [static]

Destroys the managed context for the given identifier.

Parameters:
ThreadIdentifier unique thread id
Exceptions:
InvalidThreadException if the thread id is not one in the managed store.
Assertion if the thread is in a running state.

References corelinux::ThreadContext::getState(), corelinux::Singleton< TypeImpl >::instance(), theThreadManager, corelinux::THREAD_RUNNING, and corelinux::THREAD_STARTING.

Int corelinux::Thread::getThreadPriority ( ThreadIdentifierCref  anId  )  throw ( InvalidThreadException, Assertion ) [static]

Get thread priority for the given indentifier.

Parameters:
ThreadIdentifier unique thread id
Exceptions:
InvalidThreadException if the thread id is not one in the managed store.
Assertion if the thread is in a running state.

References corelinux::ThreadContext::getIdentifier(), getThreadContext(), and corelinux::Environment::getThreadPriority().

void corelinux::Thread::setThreadPriority ( ThreadIdentifierCref  anId,
Int  prio 
) throw ( InvalidThreadException, Assertion ) [static]

Set thread priority for the given indentifier.

Parameters:
ThreadIdentifier unique thread id
prio priority value
Exceptions:
InvalidThreadException if the thread id is not one in the managed store.
Assertion if the thread is in a running state.

References corelinux::ThreadContext::getIdentifier(), getThreadContext(), and corelinux::Environment::setThreadPriority().

ThreadRef corelinux::Thread::operator= ( ThreadCref   )  throw ( Assertion ) [protected]

Assignment operator won't do, we should never get here anyway but the compiler will generate the missing method.

Parameters:
Thread reference to another Thread
Returns:
Thread reference to self
Exceptions:
Assertion NEVER_GET_HERE

bool corelinux::Thread::operator== ( ThreadCref   )  const throw ( Assertion ) [protected]

Equality operator not valid for class utility.

Parameters:
Thread reference to Thread
Returns:
bool True if equal
Exceptions:
Assertion NEVER_GET_HERE


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

This is the CoreLinux++ reference manual
Provided by The CoreLinux Consortium