ibrcommon::Thread Class Reference

#include <Thread.h>

Inheritance diagram for ibrcommon::Thread:
ibrcommon::JoinableThread dtn::daemon::ClientHandler dtn::daemon::IndependentComponent dtn::routing::BaseRouter::ThreadedExtension ibrcommon::MultiTimer ibrcommon::SimpleTimer ibrcommon::Timer dtn::core::SimpleBundleStorage dtn::core::SQLiteBundleStorage dtn::core::WallClock dtn::net::DiscoveryAgent dtn::net::GenericServer< T > dtn::net::HTTPConvergenceLayer dtn::net::LOWPANConvergenceLayer dtn::net::UDPConvergenceLayer dtn::net::GenericServer< ClientHandler > dtn::net::GenericServer< TCPConvergenceLayer::TCPConnection > dtn::routing::EpidemicRoutingExtension dtn::routing::NeighborRoutingExtension

List of all members.

Public Member Functions

void setPriority (void)
virtual void run (void)=0
virtual ~Thread ()
virtual void exit (void)

Static Public Member Functions

static void yield (void)
static void sleep (size_t timeout)
static void concurrency (int level)
static bool equal (pthread_t thread1, pthread_t thread2)
static pthread_t self (void)

Protected Member Functions

 Thread (size_t stack=0)

Protected Attributes

pthread_t tid
size_t stack
int priority

Detailed Description

An abstract class for defining classes that operate as a thread. A derived thread class has a run method that is invoked with the newly created thread context, and can use the derived object to store all member data that needs to be associated with that context. This means the derived object can safely hold thread-specific data that is managed with the life of the object, rather than having to use the clumsy thread-specific data management and access functions found in thread support libraries.

Author:
David Sugar <dyfet@gnutelephony.org>

Definition at line 26 of file Thread.h.


Constructor & Destructor Documentation

ibrcommon::Thread::Thread ( size_t  stack = 0  )  [protected]

Create a thread object that will have a preset stack size. If 0 is used, then the stack size is os defined/default.

Parameters:
stack size to use or 0 for default.

Definition at line 29 of file Thread.cpp.

References priority, and stack.

ibrcommon::Thread::~Thread (  )  [virtual]

Destroy thread object, thread-specific data, and execution context.

Definition at line 70 of file Thread.cpp.


Member Function Documentation

void ibrcommon::Thread::concurrency ( int  level  )  [static]

Used to specify scheduling policy for threads above priority "0". Normally we apply static realtime policy SCHED_FIFO (default) or SCHED_RR. However, we could apply SCHED_OTHER, etc. Set concurrency level of process. This is essentially a portable wrapper for pthread_setconcurrency.

Definition at line 49 of file Thread.cpp.

bool ibrcommon::Thread::equal ( pthread_t  thread1,
pthread_t  thread2 
) [static]

Determine if two thread identifiers refer to the same thread.

Parameters:
thread1 to test.
thread2 to test.
Returns:
true if both are the same context.

Definition at line 79 of file Thread.cpp.

Referenced by ibrcommon::JoinableThread::join().

void ibrcommon::Thread::exit ( void   )  [virtual]

Exit the thread context. This function should NO LONGER be called directly to exit a running thread. Instead this method will only be used to modify the behavior of the thread context at thread exit, including detached threads which by default delete themselves. This documented usage was changed to support Mozilla NSPR exit behavior in case we support NSPR as an alternate thread runtime in the future.

Definition at line 74 of file Thread.cpp.

Referenced by ibrcommon::JoinableThread::join().

virtual void ibrcommon::Thread::run ( void   )  [pure virtual]
static pthread_t ibrcommon::Thread::self ( void   )  [inline, static]

Get current thread id.

Returns:
thread id.

Definition at line 106 of file Thread.h.

void ibrcommon::Thread::setPriority ( void   ) 

Set thread priority without disrupting scheduling if possible. Based on scheduling policy. It is recommended that the process is set for realtime scheduling, and this method is actually for internal use.

Definition at line 35 of file Thread.cpp.

void ibrcommon::Thread::sleep ( size_t  timeout  )  [static]

Sleep current thread for a specified time period.

Parameters:
timeout to sleep for in milliseconds.

Definition at line 56 of file Thread.cpp.

Referenced by dtn::core::WallClock::componentRun().

void ibrcommon::Thread::yield ( void   )  [static]

Member Data Documentation

int ibrcommon::Thread::priority [protected]
size_t ibrcommon::Thread::stack [protected]
pthread_t ibrcommon::Thread::tid [protected]

Definition at line 29 of file Thread.h.

Referenced by ibrcommon::JoinableThread::join(), and ibrcommon::JoinableThread::start().


The documentation for this class was generated from the following files:
Generated on Mon Aug 23 08:13:02 2010 for IBR-DTNSuite by  doxygen 1.6.3