| Index: base/task_scheduler/scheduler_worker_pool_impl.cc
|
| diff --git a/base/task_scheduler/scheduler_worker_pool_impl.cc b/base/task_scheduler/scheduler_worker_pool_impl.cc
|
| index c9c72a2ee84f0a167fe677e98b3a0fdfaf24d4be..155f42dc132051ef24e91d27d8a4e512450a664d 100644
|
| --- a/base/task_scheduler/scheduler_worker_pool_impl.cc
|
| +++ b/base/task_scheduler/scheduler_worker_pool_impl.cc
|
| @@ -41,10 +41,6 @@ constexpr char kNumTasksBetweenWaitsHistogramPrefix[] =
|
| "TaskScheduler.NumTasksBetweenWaits.";
|
| constexpr char kTaskLatencyHistogramPrefix[] = "TaskScheduler.TaskLatency.";
|
|
|
| -// SchedulerWorker that owns the current thread, if any.
|
| -LazyInstance<ThreadLocalPointer<const SchedulerWorker>>::Leaky
|
| - tls_current_worker = LAZY_INSTANCE_INITIALIZER;
|
| -
|
| // SchedulerWorkerPool that owns the current thread, if any.
|
| LazyInstance<ThreadLocalPointer<const SchedulerWorkerPool>>::Leaky
|
| tls_current_worker_pool = LAZY_INSTANCE_INITIALIZER;
|
| @@ -201,7 +197,10 @@ class SchedulerWorkerPoolImpl::SchedulerSingleThreadTaskRunner :
|
| }
|
|
|
| bool RunsTasksOnCurrentThread() const override {
|
| - return tls_current_worker.Get().Get() == worker_;
|
| + // Even though this is a SingleThreadTaskRunner, test the actual sequence
|
| + // instead of the assigned worker so that another task randomly assigned
|
| + // to the same worker doesn't return true by happenstance.
|
| + return sequence_->token() == SequenceToken::GetForCurrentThread();
|
| }
|
|
|
| private:
|
| @@ -505,9 +504,7 @@ void SchedulerWorkerPoolImpl::SchedulerWorkerDelegateImpl::OnMainEntry(
|
| PlatformThread::SetName(
|
| StringPrintf("TaskScheduler%sWorker%d", outer_->name_.c_str(), index_));
|
|
|
| - DCHECK(!tls_current_worker.Get().Get());
|
| DCHECK(!tls_current_worker_pool.Get().Get());
|
| - tls_current_worker.Get().Set(worker);
|
| tls_current_worker_pool.Get().Set(outer_);
|
|
|
| // New threads haven't run GetWork() yet, so reset the |idle_start_time_|.
|
|
|