• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/threading/thread_checker_impl.h"
6 
7 namespace base {
8 
ThreadCheckerImpl()9 ThreadCheckerImpl::ThreadCheckerImpl()
10     : valid_thread_id_() {
11   EnsureThreadIdAssigned();
12 }
13 
~ThreadCheckerImpl()14 ThreadCheckerImpl::~ThreadCheckerImpl() {}
15 
CalledOnValidThread() const16 bool ThreadCheckerImpl::CalledOnValidThread() const {
17   EnsureThreadIdAssigned();
18   AutoLock auto_lock(lock_);
19   return valid_thread_id_ == PlatformThread::CurrentRef();
20 }
21 
DetachFromThread()22 void ThreadCheckerImpl::DetachFromThread() {
23   AutoLock auto_lock(lock_);
24   valid_thread_id_ = PlatformThreadRef();
25 }
26 
EnsureThreadIdAssigned() const27 void ThreadCheckerImpl::EnsureThreadIdAssigned() const {
28   AutoLock auto_lock(lock_);
29   if (valid_thread_id_.is_null()) {
30     valid_thread_id_ = PlatformThread::CurrentRef();
31   }
32 }
33 
34 }  // namespace base
35