IArchMultithread Class Reference

Interface for architecture dependent multithreading. More...

#include <IArchMultithread.h>

Inherits IInterface.

Inherited by CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Inheritance diagram for IArchMultithread:

Inheritance graph
[legend]
Collaboration diagram for IArchMultithread:

Collaboration graph
[legend]
List of all members.

Public Types

typedef void *(*) ThreadFunc (void *)
 Type of thread entry point.
typedef unsigned int ThreadID
 Type of thread identifier.
typedef void(*) SignalFunc (ESignal, void *userData)
 Type of signal handler function.
 kINTERRUPT
 Interrupt (e.g. Ctrl+C).
 kTERMINATE
 Terminate (e.g. Ctrl+Break).
 kHANGUP
 Hangup (SIGHUP).
 kUSER
 User (SIGUSR2).
 kNUM_SIGNALS
enum  ESignal {
  kINTERRUPT, kTERMINATE, kHANGUP, kUSER,
  kNUM_SIGNALS
}
 Types of signals. More...

Public Member Functions

manipulators
virtual CArchCond newCondVar ()=0
 Create a condition variable.
virtual void closeCondVar (CArchCond)=0
 Destroy a condition variable.
virtual void signalCondVar (CArchCond)=0
 Signal a condition variable.
virtual void broadcastCondVar (CArchCond)=0
 Broadcast a condition variable.
virtual bool waitCondVar (CArchCond, CArchMutex, double timeout)=0
 Wait on a condition variable.
virtual CArchMutex newMutex ()=0
 Create a recursive mutex.
virtual void closeMutex (CArchMutex)=0
 Destroy a mutex.
virtual void lockMutex (CArchMutex)=0
 Lock a mutex.
virtual void unlockMutex (CArchMutex)=0
 Unlock a mutex.
virtual CArchThread newThread (ThreadFunc func, void *userData)=0
 Start a new thread.
virtual CArchThread newCurrentThread ()=0
 Get a reference to the calling thread.
virtual CArchThread copyThread (CArchThread thread)=0
 Copy a thread object.
virtual void closeThread (CArchThread)=0
 Release a thread reference.
virtual void cancelThread (CArchThread thread)=0
 Force a thread to exit.
virtual void setPriorityOfThread (CArchThread, int n)=0
 Change thread priority.
virtual void testCancelThread ()=0
 Cancellation point.
virtual bool wait (CArchThread thread, double timeout)=0
 Wait for a thread to exit.
virtual bool isSameThread (CArchThread, CArchThread)=0
 Compare threads.
virtual bool isExitedThread (CArchThread thread)=0
 Test if thread exited.
virtual void * getResultOfThread (CArchThread thread)=0
 Returns the exit code of a thread.
virtual ThreadID getIDOfThread (CArchThread thread)=0
 Returns an ID for a thread.
virtual void setSignalHandler (ESignal, SignalFunc func, void *userData)=0
 Set the interrupt handler.
virtual void raiseSignal (ESignal signal)=0
 Invoke the signal handler.

Detailed Description

Interface for architecture dependent multithreading.

This interface defines the multithreading operations required by synergy. Each architecture must implement this interface.

Definition at line 68 of file IArchMultithread.h.


Member Enumeration Documentation

enum IArchMultithread::ESignal

Types of signals.

Not all platforms support all signals. Unsupported signals are ignored.

Enumerator:
kINTERRUPT  Interrupt (e.g. Ctrl+C).
kTERMINATE  Terminate (e.g. Ctrl+Break).
kHANGUP  Hangup (SIGHUP).
kUSER  User (SIGUSR2).

Definition at line 79 of file IArchMultithread.h.


Member Function Documentation

virtual void IArchMultithread::broadcastCondVar ( CArchCond   )  [pure virtual]

Broadcast a condition variable.

Broadcasting a condition variable releases all waiting threads.

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::broadcastCondVar().

virtual void IArchMultithread::cancelThread ( CArchThread  thread  )  [pure virtual]

Force a thread to exit.

Causes thread to exit when it next calls a cancellation point. A thread avoids cancellation as long as it nevers calls a cancellation point. Once it begins the cancellation process it must always let cancellation go to completion but may take as long as necessary to clean up.

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::cancelThread().

virtual void IArchMultithread::closeThread ( CArchThread   )  [pure virtual]

Release a thread reference.

Deletes the given thread object. This does not destroy the thread the object referred to, even if there are no remaining references. Use cancelThread() and waitThread() to stop a thread and wait for it to exit.

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::closeThread().

virtual CArchThread IArchMultithread::copyThread ( CArchThread  thread  )  [pure virtual]

Copy a thread object.

Returns a reference to to thread referred to by thread.

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::copyThread().

virtual ThreadID IArchMultithread::getIDOfThread ( CArchThread  thread  )  [pure virtual]

Returns an ID for a thread.

Returns some ID number for thread. This is for logging purposes. All thread objects referring to the same thread return the same ID. However, clients should us isSameThread() to compare thread objects instead of comparing IDs.

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::getIDOfThread().

virtual void* IArchMultithread::getResultOfThread ( CArchThread  thread  )  [pure virtual]

Returns the exit code of a thread.

Waits indefinitely for thread to exit (if it hasn't yet) then returns the thread's exit code.

(Cancellation point)

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::getResultOfThread().

virtual bool IArchMultithread::isExitedThread ( CArchThread  thread  )  [pure virtual]

Test if thread exited.

Returns true iff thread has exited.

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::isExitedThread().

virtual bool IArchMultithread::isSameThread ( CArchThread  ,
CArchThread   
) [pure virtual]

Compare threads.

Returns true iff two thread objects refer to the same thread. Note that comparing thread objects directly is meaningless.

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::isSameThread().

virtual CArchCond IArchMultithread::newCondVar (  )  [pure virtual]

Create a condition variable.

The condition variable is an opaque data type.

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::newCondVar().

virtual CArchThread IArchMultithread::newCurrentThread (  )  [pure virtual]

Get a reference to the calling thread.

Returns a thread representing the current (i.e. calling) thread.

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::newCurrentThread().

virtual CArchMutex IArchMultithread::newMutex (  )  [pure virtual]

Create a recursive mutex.

Creates a recursive mutex. A thread may lock a recursive mutex when it already holds a lock on that mutex. The mutex is an opaque data type.

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::newMutex().

virtual CArchThread IArchMultithread::newThread ( ThreadFunc  func,
void *  userData 
) [pure virtual]

Start a new thread.

Creates and starts a new thread, using func as the entry point and passing it userData. The thread is an opaque data type.

Referenced by CArch::newThread().

virtual void IArchMultithread::raiseSignal ( ESignal  signal  )  [pure virtual]

Invoke the signal handler.

Invokes the signal handler for signal, if any. If no handler cancels the main thread for kINTERRUPT and kTERMINATE and ignores the call otherwise.

Referenced by CArch::raiseSignal().

virtual void IArchMultithread::setPriorityOfThread ( CArchThread  ,
int  n 
) [pure virtual]

Change thread priority.

Changes the priority of thread by n. If n is positive the thread has a lower priority and if negative a higher priority. Some architectures may not support either or both directions.

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::setPriorityOfThread().

virtual void IArchMultithread::setSignalHandler ( ESignal  ,
SignalFunc  func,
void *  userData 
) [pure virtual]

Set the interrupt handler.

Sets the function to call on receipt of an external interrupt. By default and when func is NULL, the main thread is cancelled.

Referenced by CArch::setSignalHandler().

virtual void IArchMultithread::signalCondVar ( CArchCond   )  [pure virtual]

Signal a condition variable.

Signalling a condition variable releases one waiting thread.

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::signalCondVar().

virtual void IArchMultithread::testCancelThread (  )  [pure virtual]

Cancellation point.

This method does nothing but is a cancellation point. Clients can make their own functions cancellation points by calling this method at appropriate times.

(Cancellation point)

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::testCancelThread().

virtual bool IArchMultithread::wait ( CArchThread  thread,
double  timeout 
) [pure virtual]

Wait for a thread to exit.

Waits for up to timeout seconds for thread to exit (normally or by cancellation). Waits forever if timeout < 0. Returns true if the thread exited, false otherwise. Waiting on the current thread returns immediately with false.

(Cancellation point)

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::wait().

virtual bool IArchMultithread::waitCondVar ( CArchCond  ,
CArchMutex  ,
double  timeout 
) [pure virtual]

Wait on a condition variable.

Wait on a conditation variable for up to timeout seconds. If timeout is < 0 then there is no timeout. The mutex must be locked when this method is called. The mutex is unlocked during the wait and locked again before returning. Returns true if the condition variable was signalled and false on timeout.

(Cancellation point)

Implemented in CArch, CArchMultithreadPosix, and CArchMultithreadWindows.

Referenced by CArch::waitCondVar().


The documentation for this class was generated from the following file:
Generated on Fri Nov 6 00:19:18 2009 for synergy-plus by  doxygen 1.4.7