Subversion Repositories Games.Chess Giants

Rev

Rev 108 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 108 Rev 154
Line 13... Line 13...
13
#    define pthread_t       HANDLE
13
#    define pthread_t       HANDLE
14
#    define thread_t        HANDLE
14
#    define thread_t        HANDLE
15
extern pthread_t NumaStartThread(void *func, void *args);
15
extern pthread_t NumaStartThread(void *func, void *args);
16
 
16
 
17
#    include <windows.h>
17
#    include <windows.h>
18
//#    pragma intrinsic (_InterlockedExchange) // Pierre-Marie Baty -- it's already intrinsic, and there's no leading underscore
-
 
19
typedef volatile LONG lock_t[1];
18
typedef volatile LONG lock_t[1];
20
 
19
 
21
#    define LockInit(v)      ((v)[0] = 0)
20
#    define LockInit(v)      ((v)[0] = 0)
22
#    define LockFree(v)      ((v)[0] = 0)
21
#    define LockFree(v)      ((v)[0] = 0)
23
#    define Unlock(v)        ((v)[0] = 0)
22
#    define Unlock(v)        ((v)[0] = 0)
24
__forceinline void Lock(volatile LONG * hPtr) {
23
__forceinline void Lock(volatile LONG * hPtr) {
25
  int iValue;
24
  int iValue;
26
 
25
 
27
  for (;;) {
26
  for (;;) {
28
    iValue = /*_*/InterlockedExchange((LPLONG) hPtr, 1); // Pierre-Marie Baty -- no leading underscore
27
    iValue = _InterlockedExchange((LPLONG) hPtr, 1);
29
    if (0 == iValue)
28
    if (0 == iValue)
30
      return;
29
      return;
31
    while (*hPtr);
30
    while (*hPtr);
32
  }
31
  }
33
}
32
}