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

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(post_lock_);
23 post_events_.push_back(i);
24 }
25
26 void SequencedTaskTracker::TaskStarted(int i) {
27 AutoLock lock(start_lock_);
28 start_events_.push_back(i);
29 }
30
31 void SequencedTaskTracker::TaskEnded(int i) {
32 AutoLock lock(end_lock_);
33 end_events_.push_back(i);
34 }
35
36 const std::vector<int>&
37 SequencedTaskTracker::GetPostOrder() const {
38 return post_events_;
39 }
40
41 const std::vector<int>&
42 SequencedTaskTracker::GetStartOrder() const {
43 return start_events_;
44 }
45
46 const std::vector<int>&
47 SequencedTaskTracker::GetEndOrder() const {
48 return end_events_;
49 }
50
51 void SequencedTaskTracker::FastTask(int i) {
52 TaskStarted(i);
53 base::PlatformThread::YieldCurrentThread();
54 TaskEnded(i);
55 }
56
57 void SequencedTaskTracker::SlowTask(int i) {
58 TaskStarted(i);
59 base::PlatformThread::Sleep(base::TimeDelta::FromSeconds(1));
60 TaskEnded(i);
61 }
62
63 void SequencedTaskTracker::PostFastNonNestableFromSlowNonNestable(
64 scoped_refptr<SequencedTaskRunner> task_runner,
65 const int i,
66 const int child_count) {
67
68 TaskStarted(i);
69
70 for (int j = 0; j < child_count; ++j) {
71 base::PlatformThread::YieldCurrentThread();
72 AutoLock post_lock(post_lock_);
73 const int child_i = GetNextPostOrdinal();
74 Closure task = Bind(&SequencedTaskTracker::FastTask,
75 this,
76 child_i);
77 post_events_.push_back(child_i);
78 task_runner->PostNonNestableTask(FROM_HERE, task);
Francois 2012/03/18 16:28:29 The loop body is messy, but I want to hear your co
79 }
80
81 TaskEnded(i);
82 }
83
84 } // namespace internal
85
86 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698