misc/libphysfs/lzma/C/Threads.h
branchui-scaling
changeset 15283 c4fd2813b127
parent 13390 0135e64c6c66
parent 15279 7ab5cf405686
child 15663 d92eeb468dad
equal deleted inserted replaced
13390:0135e64c6c66 15283:c4fd2813b127
     1 /* Threads.h */
       
     2 
       
     3 #ifndef __7Z_THRESDS_H
       
     4 #define __7Z_THRESDS_H
       
     5 
       
     6 #include <windows.h>
       
     7 
       
     8 #include "Types.h"
       
     9 
       
    10 typedef struct _CThread
       
    11 {
       
    12   HANDLE handle;
       
    13 } CThread;
       
    14 
       
    15 #define Thread_Construct(thread) (thread)->handle = NULL
       
    16 #define Thread_WasCreated(thread) ((thread)->handle != NULL)
       
    17  
       
    18 typedef unsigned THREAD_FUNC_RET_TYPE;
       
    19 #define THREAD_FUNC_CALL_TYPE StdCall
       
    20 #define THREAD_FUNC_DECL THREAD_FUNC_RET_TYPE THREAD_FUNC_CALL_TYPE
       
    21 
       
    22 HRes Thread_Create(CThread *thread, THREAD_FUNC_RET_TYPE (THREAD_FUNC_CALL_TYPE *startAddress)(void *), LPVOID parameter);
       
    23 HRes Thread_Wait(CThread *thread);
       
    24 HRes Thread_Close(CThread *thread);
       
    25 
       
    26 typedef struct _CEvent
       
    27 {
       
    28   HANDLE handle;
       
    29 } CEvent;
       
    30 
       
    31 typedef CEvent CAutoResetEvent;
       
    32 typedef CEvent CManualResetEvent;
       
    33 
       
    34 #define Event_Construct(event) (event)->handle = NULL
       
    35 #define Event_IsCreated(event) ((event)->handle != NULL)
       
    36 
       
    37 HRes ManualResetEvent_Create(CManualResetEvent *event, int initialSignaled);
       
    38 HRes ManualResetEvent_CreateNotSignaled(CManualResetEvent *event);
       
    39 HRes AutoResetEvent_Create(CAutoResetEvent *event, int initialSignaled);
       
    40 HRes AutoResetEvent_CreateNotSignaled(CAutoResetEvent *event);
       
    41 HRes Event_Set(CEvent *event);
       
    42 HRes Event_Reset(CEvent *event);
       
    43 HRes Event_Wait(CEvent *event);
       
    44 HRes Event_Close(CEvent *event);
       
    45 
       
    46 
       
    47 typedef struct _CSemaphore
       
    48 {
       
    49   HANDLE handle;
       
    50 } CSemaphore;
       
    51 
       
    52 #define Semaphore_Construct(p) (p)->handle = NULL
       
    53 
       
    54 HRes Semaphore_Create(CSemaphore *p, UInt32 initiallyCount, UInt32 maxCount);
       
    55 HRes Semaphore_ReleaseN(CSemaphore *p, UInt32 num);
       
    56 HRes Semaphore_Release1(CSemaphore *p);
       
    57 HRes Semaphore_Wait(CSemaphore *p);
       
    58 HRes Semaphore_Close(CSemaphore *p);
       
    59 
       
    60 
       
    61 typedef CRITICAL_SECTION CCriticalSection;
       
    62 
       
    63 HRes CriticalSection_Init(CCriticalSection *p);
       
    64 #define CriticalSection_Delete(p) DeleteCriticalSection(p)
       
    65 #define CriticalSection_Enter(p) EnterCriticalSection(p)
       
    66 #define CriticalSection_Leave(p) LeaveCriticalSection(p)
       
    67 
       
    68 #endif
       
    69