mirror of
https://github.com/DrBeef/Raze.git
synced 2024-12-15 23:21:21 +00:00
718112a8fe
Currently none of these is being used, but eventually they will, once more code gets ported over. So it's better to have them right away and avoid editing the project file too much, only to revert that later.
68 lines
2 KiB
C
68 lines
2 KiB
C
/* Threads.h -- multithreading library
|
|
2017-06-18 : Igor Pavlov : Public domain */
|
|
|
|
#ifndef __7Z_THREADS_H
|
|
#define __7Z_THREADS_H
|
|
|
|
#ifdef _WIN32
|
|
#include <windows.h>
|
|
#endif
|
|
|
|
#include "7zTypes.h"
|
|
|
|
EXTERN_C_BEGIN
|
|
|
|
WRes HandlePtr_Close(HANDLE *h);
|
|
WRes Handle_WaitObject(HANDLE h);
|
|
|
|
typedef HANDLE CThread;
|
|
#define Thread_Construct(p) *(p) = NULL
|
|
#define Thread_WasCreated(p) (*(p) != NULL)
|
|
#define Thread_Close(p) HandlePtr_Close(p)
|
|
#define Thread_Wait(p) Handle_WaitObject(*(p))
|
|
|
|
typedef
|
|
#ifdef UNDER_CE
|
|
DWORD
|
|
#else
|
|
unsigned
|
|
#endif
|
|
THREAD_FUNC_RET_TYPE;
|
|
|
|
#define THREAD_FUNC_CALL_TYPE MY_STD_CALL
|
|
#define THREAD_FUNC_DECL THREAD_FUNC_RET_TYPE THREAD_FUNC_CALL_TYPE
|
|
typedef THREAD_FUNC_RET_TYPE (THREAD_FUNC_CALL_TYPE * THREAD_FUNC_TYPE)(void *);
|
|
WRes Thread_Create(CThread *p, THREAD_FUNC_TYPE func, LPVOID param);
|
|
|
|
typedef HANDLE CEvent;
|
|
typedef CEvent CAutoResetEvent;
|
|
typedef CEvent CManualResetEvent;
|
|
#define Event_Construct(p) *(p) = NULL
|
|
#define Event_IsCreated(p) (*(p) != NULL)
|
|
#define Event_Close(p) HandlePtr_Close(p)
|
|
#define Event_Wait(p) Handle_WaitObject(*(p))
|
|
WRes Event_Set(CEvent *p);
|
|
WRes Event_Reset(CEvent *p);
|
|
WRes ManualResetEvent_Create(CManualResetEvent *p, int signaled);
|
|
WRes ManualResetEvent_CreateNotSignaled(CManualResetEvent *p);
|
|
WRes AutoResetEvent_Create(CAutoResetEvent *p, int signaled);
|
|
WRes AutoResetEvent_CreateNotSignaled(CAutoResetEvent *p);
|
|
|
|
typedef HANDLE CSemaphore;
|
|
#define Semaphore_Construct(p) *(p) = NULL
|
|
#define Semaphore_IsCreated(p) (*(p) != NULL)
|
|
#define Semaphore_Close(p) HandlePtr_Close(p)
|
|
#define Semaphore_Wait(p) Handle_WaitObject(*(p))
|
|
WRes Semaphore_Create(CSemaphore *p, UInt32 initCount, UInt32 maxCount);
|
|
WRes Semaphore_ReleaseN(CSemaphore *p, UInt32 num);
|
|
WRes Semaphore_Release1(CSemaphore *p);
|
|
|
|
typedef CRITICAL_SECTION CCriticalSection;
|
|
WRes CriticalSection_Init(CCriticalSection *p);
|
|
#define CriticalSection_Delete(p) DeleteCriticalSection(p)
|
|
#define CriticalSection_Enter(p) EnterCriticalSection(p)
|
|
#define CriticalSection_Leave(p) LeaveCriticalSection(p)
|
|
|
|
EXTERN_C_END
|
|
|
|
#endif
|