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

Side by Side Diff: base/test/sequenced_task_runner_test_template.cc

Issue 9663075: Implementation of SequencedTaskRunner based on SequencedWorkerPool. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 8 years, 9 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 | Annotate | Revision Log
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/test/sequenced_task_runner_test_template.h"
6
7 namespace base {
8
9 namespace internal {
10
11 SequencedTaskTracker::SequencedTaskTracker() : next_post_i_(0) {
12 }
13
14 SequencedTaskTracker::~SequencedTaskTracker() {
15 }
16
17 int SequencedTaskTracker::GetNextPostOrdinal() {
18 return next_post_i_++;
19 }
20
21 void SequencedTaskTracker::TaskPosted(int i) {
22 AutoLock lock(phase_lock_);
23 phases_.push_back(TaskPhase(i, TaskPhase::POST));
24 }
25
26 void SequencedTaskTracker::TaskStarted(int i) {
27 AutoLock lock(phase_lock_);
28 phases_.push_back(TaskPhase(i, TaskPhase::START));
29 }
30
31 void SequencedTaskTracker::TaskEnded(int i) {
32 AutoLock lock(phase_lock_);
33 phases_.push_back(TaskPhase(i, TaskPhase::END));
34 }
35
36 const std::vector<SequencedTaskTracker::TaskPhase>&
37 SequencedTaskTracker::GetTaskPhases() const {
38 return phases_;
39 }
40
41 void SequencedTaskTracker::FastTask(int i) {
42 TaskStarted(i);
43 base::PlatformThread::YieldCurrentThread();
akalin 2012/03/20 22:16:08 remove this line -- it shouldn't be needed and its
Francois 2012/03/26 09:33:21 Done.
44 TaskEnded(i);
45 }
46
47 void SequencedTaskTracker::SlowTask(int i) {
48 TaskStarted(i);
49 base::PlatformThread::Sleep(base::TimeDelta::FromSeconds(1));
50 TaskEnded(i);
51 }
52
53 void SequencedTaskTracker::PostFastNonNestableFromSlowNonNestable(
54 scoped_refptr<SequencedTaskRunner> task_runner,
55 const int i,
56 const int child_count) {
57
58 TaskStarted(i);
59
60 for (int j = 0; j < child_count; ++j) {
61 AutoLock phase_lock(phase_lock_);
62 const int child_i = GetNextPostOrdinal();
63 Closure task = Bind(&SequencedTaskTracker::FastTask,
64 this,
65 child_i);
66 phases_.push_back(TaskPhase(child_i, TaskPhase::POST));
67 task_runner->PostNonNestableTask(FROM_HERE, task);
68 }
69
70 TaskEnded(i);
71 }
72
73 } // namespace internal
74
75 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698