libcw/cwThread.h

46 lines
1.2 KiB
C
Raw Normal View History

2019-12-19 03:24:12 +00:00
#ifndef cwThread_H
#define cwThread_H
namespace cw
{
namespace thread
2019-12-19 03:24:12 +00:00
{
typedef enum
{
kNotInitThId,
kPausedThId,
kRunningThId,
kExitedThId
} stateId_t;
2019-12-19 03:24:12 +00:00
typedef handle<struct thread_str> handle_t;
2019-12-19 03:24:12 +00:00
// Return false to indicate that the thread should terminate.
typedef bool (*cbFunc_t)( void* arg );
2019-12-19 03:24:12 +00:00
typedef unsigned long long thread_id_t;
// The thread is in the 'paused' state after it is created.
// stateMicros = total time out duration for switching to the exit state or for switching in/out of pause state.
// pauseMicros = duration of thread sleep interval when in paused state.
rc_t create( handle_t& hRef, cbFunc_t func, void* funcArg, int stateTimeOutMicros=100000, int pauseMicros=10000 );
rc_t destroy( handle_t& hRef );
2019-12-19 03:24:12 +00:00
enum { kPauseFl=0x01, kWaitFl=0x02 };
rc_t pause( handle_t h, unsigned cmdFlags = kWaitFl );
rc_t unpause( handle_t h ); // same as threadPause(h,kWaitFl)
stateId_t state( handle_t h );
2019-12-19 03:24:12 +00:00
// Return the thread id of the calling context.
thread_id_t id();
unsigned stateTimeOutMicros( handle_t h);
unsigned pauseMicros( handle_t h );
}
2019-12-19 03:24:12 +00:00
rc_t threadTest();
}
#endif