// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/task/thread_pool/pooled_task_runner_delegate.h" #include "base/debug/task_trace.h" #include "base/logging.h" namespace base { namespace internal { namespace { // Stores the current PooledTaskRunnerDelegate in this process(null if none). // Used to tell when a task is posted from the main thread after the // task environment was brought down in unit tests so that TaskRunners can // return false on PostTask, letting callers know they should complete // necessary work synchronously. A PooledTaskRunnerDelegate is usually // instantiated before worker threads are started and deleted after worker // threads have been joined. This makes the variable const while worker threads // are up and as such it doesn't need to be atomic. // Also used to tell if an attempt is made to run a task after its // task runner's delegate is no longer the current delegate, i.e., a task runner // is created in one unit test and posted to in a subsequent test, due to global // state leaking between tests. PooledTaskRunnerDelegate* g_current_delegate = …; } // namespace PooledTaskRunnerDelegate::PooledTaskRunnerDelegate() { … } PooledTaskRunnerDelegate::~PooledTaskRunnerDelegate() { … } // static bool PooledTaskRunnerDelegate::MatchesCurrentDelegate( PooledTaskRunnerDelegate* delegate) { … } } // namespace internal } // namespace base