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_
|