73 lines
2.0 KiB
C++
73 lines
2.0 KiB
C++
// Copyright (C) 2003 Intel Corporation
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// Thread.h
|
|
//
|
|
// This file contains an OS independent interface for thread manipulation
|
|
// A Thread class is defined for easy usage.
|
|
//
|
|
// Usage:
|
|
//
|
|
// Option 1: Construct an instance of the "Thread" class with an external
|
|
// callback function. When calling the "start" method, the thread will be
|
|
// started on the callback function
|
|
//
|
|
// Option 2: Subclass the "Thread" class and reimplement the virtual "run"
|
|
// method. When calling the "start" method, the thread will be started
|
|
// on the "run" function.
|
|
//
|
|
// Implementation overview:
|
|
// Calling the "start" method will start the new thread, which will call the
|
|
// "run" method. The default implementation of the "run" method will call
|
|
// the Callback function given in the constructor.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////
|
|
#ifndef _LAD_THREAD_H
|
|
#define _LAD_THREAD_H
|
|
|
|
#ifndef WAIT_INFINITE
|
|
#define WAIT_INFINITE 0xffffffff
|
|
#endif
|
|
#ifndef NULL
|
|
#define NULL 0
|
|
#endif
|
|
|
|
typedef void (*CallbackFunction) (void*);
|
|
|
|
class OSThread;
|
|
|
|
class Thread {
|
|
friend class OSThread;
|
|
public:
|
|
Thread (CallbackFunction func = NULL, void* param = NULL);
|
|
Thread (const Thread& rhs);
|
|
virtual ~Thread();
|
|
|
|
// wait for the thread to complete; return true if the thread completed,
|
|
// false on timeout
|
|
bool wait(unsigned long msecs = WAIT_INFINITE) const;
|
|
// start the new thread, return true on success
|
|
bool start();
|
|
// true if the thread is in running state
|
|
bool running() const;
|
|
// measure the time (in msecs) from thread start-time
|
|
long elapsedTime() const;
|
|
|
|
// return ID for the current thread
|
|
static unsigned long currentThread();
|
|
// put the current thread to sleep
|
|
static void msleep (long msecs);
|
|
|
|
Thread& operator= (const Thread& rhs);
|
|
protected:
|
|
virtual void run();
|
|
private:
|
|
CallbackFunction _func;
|
|
void* _param;
|
|
long _startTime;
|
|
OSThread* _osThread;
|
|
};
|
|
|
|
#endif //_LAD_THREAD
|
|
|