123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // Copyright (c) 2011 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- // This file is used for debugging assertion support. The Lock class
- // is functionally a wrapper around the LockImpl class, so the only
- // real intelligence in the class is in the debugging logic.
- #include "base/synchronization/lock.h"
- #if DCHECK_IS_ON()
- #include "base/threading/platform_thread.h"
- #endif
- #if DCHECK_IS_ON()
- namespace base {
- Lock::Lock() : lock_() {
- }
- Lock::~Lock() {
- DCHECK(owning_thread_ref_.is_null());
- }
- void Lock::AssertAcquired() const {
- DCHECK_EQ(owning_thread_ref_, PlatformThread::CurrentRef());
- }
- void Lock::CheckHeldAndUnmark() {
- DCHECK_EQ(owning_thread_ref_, PlatformThread::CurrentRef());
- owning_thread_ref_ = PlatformThreadRef();
- }
- void Lock::CheckUnheldAndMark() {
- DCHECK(owning_thread_ref_.is_null());
- owning_thread_ref_ = PlatformThread::CurrentRef();
- }
- } // namespace base
- #endif // DCHECK_IS_ON()
|