libcommonc++  0.7
Thread Class Reference

A thread of execution. More...

#include <Thread.h++>

Inheritance diagram for Thread:
Collaboration diagram for Thread:

Public Member Functions

 Thread (bool detached=false, size_t stackSize=0)
 Construct a new Thread. More...
 
 Thread (Runnable *runnable, bool detached=false, size_t stackSize=0)
 Construct a new Thread with a Runnable object. More...
 
virtual ~Thread ()
 Destructor. More...
 
virtual void start ()
 Start executing the thread. More...
 
virtual void stop ()
 Stop execution of the thread. More...
 
bool join ()
 Wait for the thread to terminate. More...
 
bool isRunning () const
 Test if the thread is currently running. More...
 
bool isDetached () const
 Test if the thread is detached. More...
 
void setPriority (Priority priority)
 Set the thread priority. More...
 
Priority getPriority () const
 Get the thread priority. More...
 
void setName (const String &name)
 Set the name of this thread. More...
 
String getName () const
 Get the name of this thread. More...
 

Static Public Member Functions

static void sleep (timespan_ms_t msec)
 Suspend the calling thread for the given time interval. More...
 
static ThreadcurrentThread ()
 Obtain a pointer to the Thread object for the calling thread. More...
 
static ThreadID currentThreadID ()
 Get the calling thread's thread ID. More...
 

Protected Member Functions

virtual void run ()
 Main function. More...
 
virtual void cleanup ()
 Cleanup function. More...
 
bool trySleep (timespan_ms_t msec)
 Suspend the thread for the given time interval, returning early if the thread was cancelled via a call to stop(). More...
 
bool testCancel ()
 Test for asynchronous cancellation requests. More...
 
void yield ()
 Yield the CPU to (potentially) another thread. More...
 

Static Protected Member Functions

static void exit ()
 Exit (terminate) the calling thread. More...
 

Detailed Description

A thread of execution.

Thread can be used in one of two ways:

  • It can be subclassed. When started, the new thread will begin executing in its run() method, which must be suitably overridden.
  • An object that implements the Runnable interface can be passed to its constructor. When started, the new thread will begin executing in that Runnable object's run() method.

A thread can be detached or joinable. A joinable thread continues to exist after it has finished executing; its resources must be reclaimed by calling the join() method. A joinable thread can be started and stopped multiple times.

Author
Mark Lindner

Constructor & Destructor Documentation

◆ Thread() [1/2]

Thread ( bool  detached = false,
size_t  stackSize = 0 
)

Construct a new Thread.

Parameters
detachedA flag indicating whether the thread will be created in a detached state.
stackSizeThe stack size for the thread, in bytes. A value of 0 indicates that the default stack size should be used.

◆ Thread() [2/2]

Thread ( Runnable runnable,
bool  detached = false,
size_t  stackSize = 0 
)

Construct a new Thread with a Runnable object.

Parameters
runnableThe runnable object whose run() method will be executed in this thread.
detachedA flag indicating whether the thread will be created in a detached state.
stackSizeThe stack size for the thread, in bytes. A value of 0 indicates that the default stack size should be used.

◆ ~Thread()

~Thread ( )
virtual

Destructor.

Member Function Documentation

◆ cleanup()

void cleanup ( )
protectedvirtual

Cleanup function.

This function will be executed by the thread just prior to termination. The default implementation is a no-op.

Reimplemented in SocketSelector, and PulseTimer.

◆ currentThread()

Thread * currentThread ( )
static

Obtain a pointer to the Thread object for the calling thread.

If the calling thread is the main thread, or some other thread that was not created via commonc++, a NULL pointer is returned. Never delete the object returned by this method.

◆ currentThreadID()

ccxx::ThreadID currentThreadID ( )
static

Get the calling thread's thread ID.

◆ exit()

void exit ( )
staticprotected

Exit (terminate) the calling thread.

◆ getName()

String getName ( ) const
inline

Get the name of this thread.

◆ getPriority()

Priority getPriority ( ) const

Get the thread priority.

◆ isDetached()

bool isDetached ( ) const
inline

Test if the thread is detached.

◆ isRunning()

bool isRunning ( ) const

Test if the thread is currently running.

◆ join()

bool join ( )

Wait for the thread to terminate.

Returns
true if the join was successful, false otherwise. Note that threads which were created in a detached state are not joinable.

◆ run()

void run ( )
protectedvirtual

Main function.

Thread execution begins in this function. The default implementation does nothing.

Implements Runnable.

Reimplemented in SocketSelector, PulseTimer, and DirectoryWatcher.

◆ setName()

void setName ( const String name)
inline

Set the name of this thread.

◆ setPriority()

void setPriority ( Priority  priority)

Set the thread priority.

◆ sleep()

void sleep ( timespan_ms_t  msec)
static

Suspend the calling thread for the given time interval.

Parameters
msecThe number of milliseconds to sleep.

◆ start()

void start ( )
virtual

Start executing the thread.

If a Runnable object was supplied in the constructor, its run() method is invoked; otherwise the thread object's run() method is called. If the thread is already running, the call has no effect.

◆ stop()

void stop ( )
virtual

Stop execution of the thread.

The thread is not forcibly killed; instead, an asynchronous cancellation request is posted to the thread. If the thread is not running, the call has no effect.

◆ testCancel()

bool testCancel ( )
protected

Test for asynchronous cancellation requests.

Returns
true If a cancellation request has been posted to the calling thread.

◆ trySleep()

bool trySleep ( timespan_ms_t  msec)
protected

Suspend the thread for the given time interval, returning early if the thread was cancelled via a call to stop().

Parameters
msecThe number of milliseconds to sleep.
Returns
true if the full interval elapsed, false if the thread was cancelled during the sleep.

◆ yield()

void yield ( )
protected

Yield the CPU to (potentially) another thread.


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