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

Unified Diff: base/threading/sequenced_worker_pool.cc

Issue 2341063002: Make SequencedWorkerPool::IsRunningSequenceOnCurrentThread() private. (Closed)
Patch Set: 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/threading/sequenced_worker_pool.h ('k') | base/threading/sequenced_worker_pool_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/threading/sequenced_worker_pool.cc
diff --git a/base/threading/sequenced_worker_pool.cc b/base/threading/sequenced_worker_pool.cc
index fb71efeaea89c2f901a2e87ecebca02e25f45c39..cae4711a706c63207d2ed187f58df428f2814077 100644
--- a/base/threading/sequenced_worker_pool.cc
+++ b/base/threading/sequenced_worker_pool.cc
@@ -117,6 +117,14 @@ struct SequencedTaskLessThan {
}
};
+// Create a process-wide unique ID to represent this task in trace events. This
+// will be mangled with a Process ID hash to reduce the likelyhood of colliding
+// with MessageLoop pointers on other processes.
+uint64_t GetTaskTraceID(const SequencedTask& task, void* pool) {
+ return (static_cast<uint64_t>(task.trace_id) << 32) |
+ static_cast<uint64_t>(reinterpret_cast<intptr_t>(pool));
+}
+
// SequencedWorkerPoolTaskRunner ---------------------------------------------
// A TaskRunner which posts tasks to a SequencedWorkerPool with a
// fixed ShutdownBehavior.
@@ -167,12 +175,15 @@ bool SequencedWorkerPoolTaskRunner::RunsTasksOnCurrentThread() const {
return pool_->RunsTasksOnCurrentThread();
}
-// SequencedWorkerPoolSequencedTaskRunner ------------------------------------
+} // namespace
+
+// SequencedWorkerPool::SequencedWorkerPoolSequencedTaskRunner ---------------
robliao 2016/09/15 14:14:16 Make SequencedWorkerPool::SequencedTaskRunner or S
fdoray 2016/09/15 15:21:59 Done. (PoolSequencedTaskRunner instead of PoolTask
// A SequencedTaskRunner which posts tasks to a SequencedWorkerPool with a
// fixed sequence token.
//
// Note that this class is RefCountedThreadSafe (inherited from TaskRunner).
-class SequencedWorkerPoolSequencedTaskRunner : public SequencedTaskRunner {
+class SequencedWorkerPool::SequencedWorkerPoolSequencedTaskRunner
+ : public SequencedTaskRunner {
public:
SequencedWorkerPoolSequencedTaskRunner(
scoped_refptr<SequencedWorkerPool> pool,
@@ -202,22 +213,22 @@ class SequencedWorkerPoolSequencedTaskRunner : public SequencedTaskRunner {
DISALLOW_COPY_AND_ASSIGN(SequencedWorkerPoolSequencedTaskRunner);
};
-SequencedWorkerPoolSequencedTaskRunner::SequencedWorkerPoolSequencedTaskRunner(
- scoped_refptr<SequencedWorkerPool> pool,
- SequencedWorkerPool::SequenceToken token,
- SequencedWorkerPool::WorkerShutdown shutdown_behavior)
+SequencedWorkerPool::SequencedWorkerPoolSequencedTaskRunner::
+ SequencedWorkerPoolSequencedTaskRunner(
+ scoped_refptr<SequencedWorkerPool> pool,
+ SequencedWorkerPool::SequenceToken token,
+ SequencedWorkerPool::WorkerShutdown shutdown_behavior)
: pool_(std::move(pool)),
token_(token),
shutdown_behavior_(shutdown_behavior) {}
-SequencedWorkerPoolSequencedTaskRunner::
-~SequencedWorkerPoolSequencedTaskRunner() {
-}
+SequencedWorkerPool::SequencedWorkerPoolSequencedTaskRunner::
+ ~SequencedWorkerPoolSequencedTaskRunner() = default;
-bool SequencedWorkerPoolSequencedTaskRunner::PostDelayedTask(
- const tracked_objects::Location& from_here,
- const Closure& task,
- TimeDelta delay) {
+bool SequencedWorkerPool::SequencedWorkerPoolSequencedTaskRunner::
+ PostDelayedTask(const tracked_objects::Location& from_here,
+ const Closure& task,
+ TimeDelta delay) {
if (delay.is_zero()) {
return pool_->PostSequencedWorkerTaskWithShutdownBehavior(
token_, from_here, task, shutdown_behavior_);
@@ -225,29 +236,20 @@ bool SequencedWorkerPoolSequencedTaskRunner::PostDelayedTask(
return pool_->PostDelayedSequencedWorkerTask(token_, from_here, task, delay);
}
-bool SequencedWorkerPoolSequencedTaskRunner::RunsTasksOnCurrentThread() const {
+bool SequencedWorkerPool::SequencedWorkerPoolSequencedTaskRunner::
+ RunsTasksOnCurrentThread() const {
return pool_->IsRunningSequenceOnCurrentThread(token_);
}
-bool SequencedWorkerPoolSequencedTaskRunner::PostNonNestableDelayedTask(
- const tracked_objects::Location& from_here,
- const Closure& task,
- TimeDelta delay) {
+bool SequencedWorkerPool::SequencedWorkerPoolSequencedTaskRunner::
+ PostNonNestableDelayedTask(const tracked_objects::Location& from_here,
+ const Closure& task,
+ TimeDelta delay) {
// There's no way to run nested tasks, so simply forward to
// PostDelayedTask.
return PostDelayedTask(from_here, task, delay);
}
-// Create a process-wide unique ID to represent this task in trace events. This
-// will be mangled with a Process ID hash to reduce the likelyhood of colliding
-// with MessageLoop pointers on other processes.
-uint64_t GetTaskTraceID(const SequencedTask& task, void* pool) {
- return (static_cast<uint64_t>(task.trace_id) << 32) |
- static_cast<uint64_t>(reinterpret_cast<intptr_t>(pool));
-}
-
-} // namespace
-
// Worker ---------------------------------------------------------------------
class SequencedWorkerPool::Worker : public SimpleThread {
@@ -839,24 +841,13 @@ bool SequencedWorkerPool::Inner::RunsTasksOnCurrentThread() const {
bool SequencedWorkerPool::Inner::IsRunningSequenceOnCurrentThread(
SequenceToken sequence_token) const {
AutoLock lock(lock_);
- if (subtle::NoBarrier_Load(&g_all_pools_state) ==
- AllPoolsState::REDIRECTED_TO_TASK_SCHEDULER) {
- // TODO(gab): This currently only verifies that the current thread is a
- // thread on which a task bound to |sequence_token| *could* run, but it
- // doesn't verify that the current is *currently running* a task bound to
- // |sequence_token|.
- const auto sequenced_task_runner_it =
- sequenced_task_runner_map_.find(sequence_token.id_);
- return sequenced_task_runner_it != sequenced_task_runner_map_.end() &&
- sequenced_task_runner_it->second->RunsTasksOnCurrentThread();
- } else {
- ThreadMap::const_iterator found =
- threads_.find(PlatformThread::CurrentId());
- if (found == threads_.end())
- return false;
- return found->second->is_processing_task() &&
- sequence_token.Equals(found->second->task_sequence_token());
- }
+ DCHECK_NE(subtle::NoBarrier_Load(&g_all_pools_state),
gab 2016/09/15 13:50:47 Actually, under redirection: SWP::GetSequencedTask
fdoray 2016/09/15 15:21:59 You're right. This CL no longer changes IsRunningS
+ AllPoolsState::REDIRECTED_TO_TASK_SCHEDULER);
+ ThreadMap::const_iterator found = threads_.find(PlatformThread::CurrentId());
+ if (found == threads_.end())
gab 2016/09/15 13:50:47 Incorporate below, i.e. return found != threads_.
fdoray 2016/09/15 15:21:59 I'll fix this method in a separate CL.
+ return false;
+ return found->second->is_processing_task() &&
+ sequence_token.Equals(found->second->task_sequence_token());
}
// See https://code.google.com/p/chromium/issues/detail?id=168415
@@ -1554,11 +1545,6 @@ bool SequencedWorkerPool::RunsTasksOnCurrentThread() const {
return inner_->RunsTasksOnCurrentThread();
}
-bool SequencedWorkerPool::IsRunningSequenceOnCurrentThread(
- SequenceToken sequence_token) const {
- return inner_->IsRunningSequenceOnCurrentThread(sequence_token);
-}
-
void SequencedWorkerPool::FlushForTesting() {
inner_->CleanupForTesting();
}
@@ -1576,4 +1562,9 @@ bool SequencedWorkerPool::IsShutdownInProgress() {
return inner_->IsShutdownInProgress();
}
+bool SequencedWorkerPool::IsRunningSequenceOnCurrentThread(
+ SequenceToken sequence_token) const {
+ return inner_->IsRunningSequenceOnCurrentThread(sequence_token);
+}
+
} // namespace base
« no previous file with comments | « base/threading/sequenced_worker_pool.h ('k') | base/threading/sequenced_worker_pool_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698