From: Marco Costalba Date: Sat, 7 Jan 2012 10:17:10 +0000 (+0100) Subject: Retire OLD_LOCKS option X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=0026c88b3ab184b45532498d407859b71d929783;hp=6482ce2bb2cb2c2450008afb58c7ef2e04d56841 Retire OLD_LOCKS option And make CRITICAL_SECTION locks the only option for Windows. This guarantees backward compatibility with all the Windows versions (even XP and older) and an hassle free experience when compiling for Windows. Tests performed by Ingo and reported on talkchess confirm there is no speed penalty against the most modern SRW locks: http://www.talkchess.com/forum/viewtopic.php?t=41835&start=20 No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/lock.h b/src/lock.h index 3b3de1ac..7f74fcf7 100644 --- a/src/lock.h +++ b/src/lock.h @@ -45,26 +45,9 @@ typedef pthread_cond_t WaitCondition; #undef WIN32_LEAN_AND_MEAN #undef NOMINMAX -// Default fast and race free locks and condition variables -#if !defined(OLD_LOCKS) - -typedef SRWLOCK Lock; -typedef CONDITION_VARIABLE WaitCondition; - -# define lock_init(x) InitializeSRWLock(x) -# define lock_grab(x) AcquireSRWLockExclusive(x) -# define lock_release(x) ReleaseSRWLockExclusive(x) -# define lock_destroy(x) (x) -# define cond_destroy(x) (x) -# define cond_init(x) InitializeConditionVariable(x) -# define cond_signal(x) WakeConditionVariable(x) -# define cond_wait(x,y) SleepConditionVariableSRW(x,y,INFINITE,0) -# define cond_timedwait(x,y,z) SleepConditionVariableSRW(x,y,z,0) - -// Fallback solution to build for Windows XP and older versions, note that -// cond_wait() is racy between lock_release() and WaitForSingleObject(). -#else - +// We use critical sections on Windows to support Windows XP and older versions, +// unfortunatly cond_wait() is racy between lock_release() and WaitForSingleObject() +// but apart from this they have the same speed performance of SRW locks. typedef CRITICAL_SECTION Lock; typedef HANDLE WaitCondition; @@ -80,6 +63,4 @@ typedef HANDLE WaitCondition; #endif -#endif - #endif // !defined(LOCK_H_INCLUDED) diff --git a/src/types.h b/src/types.h index fb938a30..0915d685 100644 --- a/src/types.h +++ b/src/types.h @@ -34,11 +34,6 @@ /// -DUSE_POPCNT | Add runtime support for use of popcnt asm-instruction. Works /// | only in 64-bit mode. For compiling requires hardware with /// | popcnt support. -/// -/// -DOLD_LOCKS | Under Windows are used the fast Slim Reader/Writer (SRW) -/// | Locks and Condition Variables: these are not supported by -/// | Windows XP and older, to compile for those platforms you -/// | should enable OLD_LOCKS. #include #include