1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/synchronization/lock_impl.h" 6 7namespace base { 8namespace internal { 9 10LockImpl::LockImpl() { 11 // The second parameter is the spin count, for short-held locks it avoid the 12 // contending thread from going to sleep which helps performance greatly. 13 ::InitializeCriticalSectionAndSpinCount(&os_lock_, 2000); 14} 15 16LockImpl::~LockImpl() { 17 ::DeleteCriticalSection(&os_lock_); 18} 19 20bool LockImpl::Try() { 21 if (::TryEnterCriticalSection(&os_lock_) != FALSE) { 22 return true; 23 } 24 return false; 25} 26 27void LockImpl::Lock() { 28 ::EnterCriticalSection(&os_lock_); 29} 30 31void LockImpl::Unlock() { 32 ::LeaveCriticalSection(&os_lock_); 33} 34 35} // namespace internal 36} // namespace base 37