mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53:09 +00:00
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 <mcostalba@gmail.com>
This commit is contained in:
parent
6482ce2bb2
commit
0026c88b3a
2 changed files with 3 additions and 27 deletions
25
src/lock.h
25
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)
|
||||
|
|
|
@ -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 <climits>
|
||||
#include <cstdlib>
|
||||
|
|
Loading…
Add table
Reference in a new issue