2015-04-02 22:57:45 +08:00
|
|
|
#ifndef _THREADING_H
|
|
|
|
#define _THREADING_H
|
2013-11-15 04:55:18 +08:00
|
|
|
|
|
|
|
#include "_global.h"
|
|
|
|
|
2015-04-02 22:57:45 +08:00
|
|
|
//enums
|
2013-11-15 04:55:18 +08:00
|
|
|
enum WAIT_ID
|
|
|
|
{
|
2013-11-17 20:10:29 +08:00
|
|
|
WAITID_RUN,
|
2014-02-17 05:06:59 +08:00
|
|
|
WAITID_STOP,
|
2014-09-07 03:18:50 +08:00
|
|
|
WAITID_LAST
|
2013-11-15 04:55:18 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
//functions
|
|
|
|
void waitclear();
|
|
|
|
void wait(WAIT_ID id);
|
|
|
|
void lock(WAIT_ID id);
|
|
|
|
void unlock(WAIT_ID id);
|
|
|
|
bool waitislocked(WAIT_ID id);
|
|
|
|
|
2015-04-02 22:57:45 +08:00
|
|
|
enum CriticalSectionLock
|
2014-07-19 10:34:22 +08:00
|
|
|
{
|
|
|
|
LockMemoryPages,
|
2014-12-09 08:29:08 +08:00
|
|
|
LockVariables,
|
|
|
|
LockModules,
|
|
|
|
LockComments,
|
|
|
|
LockLabels,
|
|
|
|
LockBookmarks,
|
|
|
|
LockFunctions,
|
|
|
|
LockLoops,
|
|
|
|
LockBreakpoints,
|
|
|
|
LockPatches,
|
|
|
|
LockThreads,
|
2014-12-23 07:31:02 +08:00
|
|
|
LockDprintf,
|
2015-04-02 22:57:45 +08:00
|
|
|
LockSym,
|
|
|
|
LockLast
|
2014-07-19 10:34:22 +08:00
|
|
|
};
|
|
|
|
|
2015-04-02 22:57:45 +08:00
|
|
|
class CriticalSectionLocker
|
2014-07-19 10:34:22 +08:00
|
|
|
{
|
|
|
|
public:
|
2014-12-23 07:31:02 +08:00
|
|
|
static void Deinitialize();
|
2015-04-02 22:57:45 +08:00
|
|
|
CriticalSectionLocker(CriticalSectionLock lock);
|
|
|
|
~CriticalSectionLocker();
|
|
|
|
void unlock();
|
|
|
|
void relock();
|
2015-03-11 09:24:47 +08:00
|
|
|
|
2015-03-23 09:56:25 +08:00
|
|
|
private:
|
2015-04-02 22:57:45 +08:00
|
|
|
static void Initialize();
|
|
|
|
static bool bInitDone;
|
|
|
|
static CRITICAL_SECTION locks[LockLast];
|
2015-03-23 09:14:18 +08:00
|
|
|
|
2015-04-02 22:57:45 +08:00
|
|
|
CriticalSectionLock gLock;
|
|
|
|
bool Locked;
|
|
|
|
};
|
2015-03-23 09:56:25 +08:00
|
|
|
|
2015-04-02 22:57:45 +08:00
|
|
|
#endif // _THREADING_H
|