| // Copyright (c) 2018 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. |
| #include "thread_annotations.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| void Acquire() EXCLUSIVE_LOCK_FUNCTION() {} |
| void Release() UNLOCK_FUNCTION() {} |
| class SCOPED_LOCKABLE AutoLock { |
| AutoLock(Lock& lock) EXCLUSIVE_LOCK_FUNCTION(lock) : lock_(lock) { |
| ~AutoLock() UNLOCK_FUNCTION() { lock_.Release(); } |
| void ExplicitIncrement(); |
| void ImplicitIncrement(); |
| int counter_ GUARDED_BY(lock_); |
| void ThreadSafe::ExplicitIncrement() { |
| void ThreadSafe::ImplicitIncrement() { |
| AutoLock auto_lock(lock_); |
| TEST(ThreadAnnotationsTest, ExplicitIncrement) { |
| thread_safe.ExplicitIncrement(); |
| TEST(ThreadAnnotationsTest, ImplicitIncrement) { |
| thread_safe.ImplicitIncrement(); |