Chromium Code Reviews| Index: base/synchronization/lock_impl_win.cc |
| diff --git a/base/synchronization/lock_impl_win.cc b/base/synchronization/lock_impl_win.cc |
| index fbc1bdd464b01254fb4bef8a9e2f1053553d3a07..d89a131a7a8a8fb84950baaaf572334e36fa85b8 100644 |
| --- a/base/synchronization/lock_impl_win.cc |
| +++ b/base/synchronization/lock_impl_win.cc |
| @@ -7,29 +7,20 @@ |
| namespace base { |
| namespace internal { |
| -LockImpl::LockImpl() { |
| - // The second parameter is the spin count, for short-held locks it avoid the |
| - // contending thread from going to sleep which helps performance greatly. |
| - ::InitializeCriticalSectionAndSpinCount(&native_handle_, 2000); |
| -} |
| +LockImpl::LockImpl() : native_handle_(SRWLOCK_INIT) {} |
| -LockImpl::~LockImpl() { |
| - ::DeleteCriticalSection(&native_handle_); |
| -} |
| +LockImpl::~LockImpl() = default; |
| bool LockImpl::Try() { |
| - if (::TryEnterCriticalSection(&native_handle_) != FALSE) { |
| - return true; |
| - } |
| - return false; |
| + return !!::TryAcquireSRWLockExclusive(&native_handle_); |
| } |
| void LockImpl::Lock() { |
| - ::EnterCriticalSection(&native_handle_); |
| + ::AcquireSRWLockExclusive(&native_handle_); |
|
scottmg
2016/04/06 22:36:12
SRWs aren't recursive where CSs are, right? Is thi
robliao
2016/04/06 22:51:09
Yup, because we don't permit recursive Locks.
See
|
| } |
| void LockImpl::Unlock() { |
| - ::LeaveCriticalSection(&native_handle_); |
| + ::ReleaseSRWLockExclusive(&native_handle_); |
| } |
| } // namespace internal |