40 lines
1.3 KiB
C++
40 lines
1.3 KiB
C++
// Copyright (c) 2012 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.
|
|
|
|
#ifndef BASE_THREADING_NON_THREAD_SAFE_IMPL_H_
|
|
#define BASE_THREADING_NON_THREAD_SAFE_IMPL_H_
|
|
|
|
#include "base/base_export.h"
|
|
#include "base/threading/thread_checker_impl.h"
|
|
|
|
namespace base {
|
|
|
|
// Full implementation of NonThreadSafe, for debug mode or for occasional
|
|
// temporary use in release mode e.g. when you need to CHECK on a thread
|
|
// bug that only occurs in the wild.
|
|
//
|
|
// Note: You should almost always use the NonThreadSafe class to get
|
|
// the right version of the class for your build configuration.
|
|
class BASE_EXPORT NonThreadSafeImpl {
|
|
public:
|
|
bool CalledOnValidThread() const;
|
|
|
|
protected:
|
|
~NonThreadSafeImpl();
|
|
|
|
// Changes the thread that is checked for in CalledOnValidThread. The next
|
|
// call to CalledOnValidThread will attach this class to a new thread. It is
|
|
// up to the NonThreadSafe derived class to decide to expose this or not.
|
|
// This may be useful when an object may be created on one thread and then
|
|
// used exclusively on another thread.
|
|
void DetachFromThread();
|
|
|
|
private:
|
|
ThreadCheckerImpl thread_checker_;
|
|
};
|
|
|
|
} // namespace base
|
|
|
|
#endif // BASE_THREADING_NON_THREAD_SAFE_IMPL_H_
|