security/sandbox/chromium/base/threading/thread_checker_impl.h

Wed, 31 Dec 2014 06:55:46 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:46 +0100
changeset 1
ca08bd8f51b2
permissions
-rw-r--r--

Added tag TORBROWSER_REPLICA for changeset 6474c204b198

     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.
     5 #ifndef BASE_THREADING_THREAD_CHECKER_IMPL_H_
     6 #define BASE_THREADING_THREAD_CHECKER_IMPL_H_
     8 #include "base/base_export.h"
     9 #include "base/synchronization/lock.h"
    10 #include "base/threading/platform_thread.h"
    12 namespace base {
    14 // Real implementation of ThreadChecker, for use in debug mode, or
    15 // for temporary use in release mode (e.g. to CHECK on a threading issue
    16 // seen only in the wild).
    17 //
    18 // Note: You should almost always use the ThreadChecker class to get the
    19 // right version for your build configuration.
    20 class BASE_EXPORT ThreadCheckerImpl {
    21  public:
    22   ThreadCheckerImpl();
    23   ~ThreadCheckerImpl();
    25   bool CalledOnValidThread() const;
    27   // Changes the thread that is checked for in CalledOnValidThread.  This may
    28   // be useful when an object may be created on one thread and then used
    29   // exclusively on another thread.
    30   void DetachFromThread();
    32  private:
    33   void EnsureThreadIdAssigned() const;
    35   mutable base::Lock lock_;
    36   // This is mutable so that CalledOnValidThread can set it.
    37   // It's guarded by |lock_|.
    38   mutable PlatformThreadId valid_thread_id_;
    39 };
    41 }  // namespace base
    43 #endif  // BASE_THREADING_THREAD_CHECKER_IMPL_H_

mercurial