Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(226)

Side by Side Diff: base/threading/sequenced_task_runner_handle.cc

Issue 2341063002: Make SequencedWorkerPool::IsRunningSequenceOnCurrentThread() private. (Closed)
Patch Set: CR danakj #12 (add comments in tests) Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | base/threading/sequenced_worker_pool.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/threading/sequenced_task_runner_handle.h" 5 #include "base/threading/sequenced_task_runner_handle.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 22 matching lines...) Expand all
33 } 33 }
34 34
35 // If we are on a worker thread for a SequencedBlockingPool that is running a 35 // If we are on a worker thread for a SequencedBlockingPool that is running a
36 // sequenced task, return a SequencedTaskRunner for it. 36 // sequenced task, return a SequencedTaskRunner for it.
37 scoped_refptr<base::SequencedWorkerPool> pool = 37 scoped_refptr<base::SequencedWorkerPool> pool =
38 SequencedWorkerPool::GetWorkerPoolForCurrentThread(); 38 SequencedWorkerPool::GetWorkerPoolForCurrentThread();
39 if (pool) { 39 if (pool) {
40 SequencedWorkerPool::SequenceToken sequence_token = 40 SequencedWorkerPool::SequenceToken sequence_token =
41 SequencedWorkerPool::GetSequenceTokenForCurrentThread(); 41 SequencedWorkerPool::GetSequenceTokenForCurrentThread();
42 DCHECK(sequence_token.IsValid()); 42 DCHECK(sequence_token.IsValid());
43 DCHECK(pool->IsRunningSequenceOnCurrentThread(sequence_token)); 43 scoped_refptr<SequencedTaskRunner> sequenced_task_runner(
44 return pool->GetSequencedTaskRunner(sequence_token); 44 pool->GetSequencedTaskRunner(sequence_token));
45 DCHECK(sequenced_task_runner->RunsTasksOnCurrentThread());
46 return sequenced_task_runner;
45 } 47 }
46 48
47 // Return the SingleThreadTaskRunner for the current thread otherwise. 49 // Return the SingleThreadTaskRunner for the current thread otherwise.
48 return base::ThreadTaskRunnerHandle::Get(); 50 return base::ThreadTaskRunnerHandle::Get();
49 } 51 }
50 52
51 // static 53 // static
52 bool SequencedTaskRunnerHandle::IsSet() { 54 bool SequencedTaskRunnerHandle::IsSet() {
53 return lazy_tls_ptr.Pointer()->Get() || 55 return lazy_tls_ptr.Pointer()->Get() ||
54 SequencedWorkerPool::GetSequenceTokenForCurrentThread().IsValid() || 56 SequencedWorkerPool::GetSequenceTokenForCurrentThread().IsValid() ||
55 base::ThreadTaskRunnerHandle::IsSet(); 57 base::ThreadTaskRunnerHandle::IsSet();
56 } 58 }
57 59
58 SequencedTaskRunnerHandle::SequencedTaskRunnerHandle( 60 SequencedTaskRunnerHandle::SequencedTaskRunnerHandle(
59 scoped_refptr<SequencedTaskRunner> task_runner) 61 scoped_refptr<SequencedTaskRunner> task_runner)
60 : task_runner_(std::move(task_runner)) { 62 : task_runner_(std::move(task_runner)) {
61 DCHECK(task_runner_->RunsTasksOnCurrentThread()); 63 DCHECK(task_runner_->RunsTasksOnCurrentThread());
62 DCHECK(!SequencedTaskRunnerHandle::IsSet()); 64 DCHECK(!SequencedTaskRunnerHandle::IsSet());
63 lazy_tls_ptr.Pointer()->Set(this); 65 lazy_tls_ptr.Pointer()->Set(this);
64 } 66 }
65 67
66 SequencedTaskRunnerHandle::~SequencedTaskRunnerHandle() { 68 SequencedTaskRunnerHandle::~SequencedTaskRunnerHandle() {
67 DCHECK(task_runner_->RunsTasksOnCurrentThread()); 69 DCHECK(task_runner_->RunsTasksOnCurrentThread());
68 DCHECK_EQ(lazy_tls_ptr.Pointer()->Get(), this); 70 DCHECK_EQ(lazy_tls_ptr.Pointer()->Get(), this);
69 lazy_tls_ptr.Pointer()->Set(nullptr); 71 lazy_tls_ptr.Pointer()->Set(nullptr);
70 } 72 }
71 73
72 } // namespace base 74 } // namespace base
OLDNEW
« no previous file with comments | « no previous file | base/threading/sequenced_worker_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698