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

Issue 2165663003: TaskScheduler: Add SequenceToken and ScopedSetSequenceTokenForCurrentThread (Closed)

Created:
4 years, 5 months ago by fdoray
Modified:
4 years, 4 months ago
Reviewers:
robliao, danakj, gab
CC:
chromium-reviews
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

TaskScheduler: Add SequenceToken and ScopedSetSequenceTokenForCurrentThread. base::SequenceToken is an opaque token that identifies a series of sequenced tasks. base::internal::ScopedSetSequenceTokenForCurrentThread identifies the SequenceToken of tasks running on the current thread throughout its lifetime. This CL also changes SequenceChecker to support base::internal::SequenceToken. In an upcoming CL, base/task_scheduler will tag all its sequences with a token returned by SequenceToken::Create(). Before running a task, it will instantiate a ScopedSetSequenceTokenForCurrentThread with the SequenceToken of the task's sequence. Sample usage of SequenceToken in follow-up CL: https://codereview.chromium.org/2172713003/ BUG=553459 Committed: https://crrev.com/eed5fa78db74a1d3d826f80baf4e6e0a188a2f43 Cr-Commit-Position: refs/heads/master@{#407937}

Patch Set 1 #

Total comments: 27

Patch Set 2 : CR gab #3 #

Patch Set 3 : self-review #

Patch Set 4 : self-review #

Patch Set 5 : check ThreadTaskRunnerHandle #

Patch Set 6 : format #

Patch Set 7 : improve comment #

Total comments: 12

Patch Set 8 : CR gab #9 #

Total comments: 19

Patch Set 9 : rebase #

Patch Set 10 : CR robliao #16 #

Patch Set 11 : restore base\threading\thread_checker* #

Patch Set 12 : invalid SequenceTokens are not equal #

Total comments: 8

Patch Set 13 : CR danakj #28 (improve comments, GetForCurrentThread, ScopedSetSequenceTokenForCurrentThread) #

Patch Set 14 : self-review #

Total comments: 7
Unified diffs Side-by-side diffs Delta from patch set Stats (+436 lines, -283 lines) Patch
M base/BUILD.gn View 1 2 3 4 2 chunks +3 lines, -0 lines 0 comments Download
M base/base.gyp View 1 2 3 4 1 chunk +1 line, -0 lines 0 comments Download
M base/base.gypi View 1 2 3 4 1 chunk +2 lines, -0 lines 0 comments Download
M base/sequence_checker.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +5 lines, -4 lines 5 comments Download
M base/sequence_checker_impl.h View 1 2 3 4 5 6 7 8 9 2 chunks +23 lines, -15 lines 0 comments Download
M base/sequence_checker_impl.cc View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +26 lines, -14 lines 2 comments Download
D base/sequence_checker_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +187 lines, -250 lines 0 comments Download
A base/sequence_token.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +65 lines, -0 lines 0 comments Download
A base/sequence_token.cc View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +59 lines, -0 lines 0 comments Download
A base/sequence_token_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +65 lines, -0 lines 0 comments Download

Dependent Patchsets:

Messages

Total messages: 41 (12 generated)
fdoray
PTAL
4 years, 5 months ago (2016-07-19 18:18:32 UTC) #2
gab
lg https://codereview.chromium.org/2165663003/diff/1/base/BUILD.gn File base/BUILD.gn (right): https://codereview.chromium.org/2165663003/diff/1/base/BUILD.gn#newcode680 base/BUILD.gn:680: "sequence_checker.h", Feels like sequence_checker.h should be alongside thread_checker.h ...
4 years, 5 months ago (2016-07-20 19:06:37 UTC) #3
fdoray
PTAnL https://codereview.chromium.org/2165663003/diff/1/base/BUILD.gn File base/BUILD.gn (right): https://codereview.chromium.org/2165663003/diff/1/base/BUILD.gn#newcode680 base/BUILD.gn:680: "sequence_checker.h", On 2016/07/20 19:06:36, gab wrote: > Feels ...
4 years, 5 months ago (2016-07-21 15:02:38 UTC) #4
fdoray
gab@/robliao@: PTAnL ThreadCheckerImpl::CalledOnValidThread() will currently return true if called from different SEQUENCED tasks that happen ...
4 years, 5 months ago (2016-07-21 15:15:42 UTC) #5
gab
On 2016/07/21 15:15:42, fdoray wrote: > gab@/robliao@: PTAnL > > ThreadCheckerImpl::CalledOnValidThread() will currently return true ...
4 years, 5 months ago (2016-07-21 16:04:35 UTC) #6
gab
https://codereview.chromium.org/2165663003/diff/1/base/sequence_checker_impl_unittest.cc File base/sequence_checker_impl_unittest.cc (right): https://codereview.chromium.org/2165663003/diff/1/base/sequence_checker_impl_unittest.cc#newcode1 base/sequence_checker_impl_unittest.cc:1: // Copyright 2013 The Chromium Authors. All rights reserved. ...
4 years, 5 months ago (2016-07-21 16:10:51 UTC) #7
fdoray
PTAnL
4 years, 5 months ago (2016-07-21 19:32:34 UTC) #8
gab
https://codereview.chromium.org/2165663003/diff/120001/base/sequence_checker_unittest.cc File base/sequence_checker_unittest.cc (right): https://codereview.chromium.org/2165663003/diff/120001/base/sequence_checker_unittest.cc#newcode102 base/sequence_checker_unittest.cc:102: internal::SequenceToken::Create()); internal::SequenceToken::Create() will become invalid after this call and ...
4 years, 5 months ago (2016-07-21 21:14:24 UTC) #9
fdoray
gab@: PTAnL https://codereview.chromium.org/2165663003/diff/120001/base/sequence_checker_unittest.cc File base/sequence_checker_unittest.cc (right): https://codereview.chromium.org/2165663003/diff/120001/base/sequence_checker_unittest.cc#newcode102 base/sequence_checker_unittest.cc:102: internal::SequenceToken::Create()); On 2016/07/21 21:14:24, gab wrote: > ...
4 years, 4 months ago (2016-07-25 13:24:28 UTC) #10
gab
lgtm, refer to your follow-up CL in this CL's description as an example user, thanks! ...
4 years, 4 months ago (2016-07-25 14:09:31 UTC) #11
fdoray
robliao@: PTAL
4 years, 4 months ago (2016-07-25 14:16:09 UTC) #13
fdoray
+danakj@: PTAL
4 years, 4 months ago (2016-07-25 14:45:43 UTC) #15
robliao
It seems that the thread checker changes can plausibly be done as a separate CL. ...
4 years, 4 months ago (2016-07-25 18:20:44 UTC) #16
fdoray
robliao@: PTAnL https://codereview.chromium.org/2165663003/diff/140001/base/sequence_checker_impl.cc File base/sequence_checker_impl.cc (right): https://codereview.chromium.org/2165663003/diff/140001/base/sequence_checker_impl.cc#newcode52 base/sequence_checker_impl.cc:52: DCHECK(!sequence_token_.IsValid() || !sequenced_worker_pool_token_.IsValid()); On 2016/07/25 18:20:44, robliao ...
4 years, 4 months ago (2016-07-25 19:44:29 UTC) #19
robliao
Ping on. > It seems that the thread checker changes can plausibly be done as ...
4 years, 4 months ago (2016-07-25 19:49:31 UTC) #21
robliao
On 2016/07/25 19:49:31, robliao wrote: > Ping on. > > > It seems that the ...
4 years, 4 months ago (2016-07-25 19:54:07 UTC) #23
robliao
lgtm
4 years, 4 months ago (2016-07-25 19:54:28 UTC) #24
fdoray
danakj@: PTAL https://codereview.chromium.org/2165663003/diff/140001/base/sequence_token.cc File base/sequence_token.cc (right): https://codereview.chromium.org/2165663003/diff/140001/base/sequence_token.cc#newcode24 base/sequence_token.cc:24: return token_ == other.token_; On 2016/07/25 19:49:31, ...
4 years, 4 months ago (2016-07-25 20:03:21 UTC) #25
robliao
https://codereview.chromium.org/2165663003/diff/140001/base/sequence_token.cc File base/sequence_token.cc (right): https://codereview.chromium.org/2165663003/diff/140001/base/sequence_token.cc#newcode24 base/sequence_token.cc:24: return token_ == other.token_; On 2016/07/25 20:03:21, fdoray wrote: ...
4 years, 4 months ago (2016-07-25 20:10:47 UTC) #26
fdoray
danakj@: PTAL https://codereview.chromium.org/2165663003/diff/140001/base/sequence_token.cc File base/sequence_token.cc (right): https://codereview.chromium.org/2165663003/diff/140001/base/sequence_token.cc#newcode24 base/sequence_token.cc:24: return token_ == other.token_; On 2016/07/25 20:10:47, ...
4 years, 4 months ago (2016-07-25 20:45:32 UTC) #27
danakj
LGTM w/ nits https://codereview.chromium.org/2165663003/diff/220001/base/sequence_checker.h File base/sequence_checker.h (right): https://codereview.chromium.org/2165663003/diff/220001/base/sequence_checker.h#newcode34 base/sequence_checker.h:34: // posted to SequencedTaskRunners bound to ...
4 years, 4 months ago (2016-07-26 19:34:37 UTC) #28
fdoray
https://codereview.chromium.org/2165663003/diff/220001/base/sequence_checker.h File base/sequence_checker.h (right): https://codereview.chromium.org/2165663003/diff/220001/base/sequence_checker.h#newcode34 base/sequence_checker.h:34: // posted to SequencedTaskRunners bound to the same sequence ...
4 years, 4 months ago (2016-07-26 20:35:46 UTC) #29
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2165663003/260001
4 years, 4 months ago (2016-07-26 20:40:21 UTC) #33
gab
Still lgtm but one thought on latest changes https://codereview.chromium.org/2165663003/diff/260001/base/sequence_checker.h File base/sequence_checker.h (right): https://codereview.chromium.org/2165663003/diff/260001/base/sequence_checker.h#newcode36 base/sequence_checker.h:36: // ...
4 years, 4 months ago (2016-07-26 20:49:49 UTC) #34
commit-bot: I haz the power
Committed patchset #14 (id:260001)
4 years, 4 months ago (2016-07-26 22:29:08 UTC) #36
commit-bot: I haz the power
Patchset 14 (id:??) landed as https://crrev.com/eed5fa78db74a1d3d826f80baf4e6e0a188a2f43 Cr-Commit-Position: refs/heads/master@{#407937}
4 years, 4 months ago (2016-07-26 22:30:51 UTC) #38
gab
https://codereview.chromium.org/2165663003/diff/260001/base/sequence_checker.h File base/sequence_checker.h (right): https://codereview.chromium.org/2165663003/diff/260001/base/sequence_checker.h#newcode25 base/sequence_checker.h:25: bool CalledOnValidSequencedThread() const { Just had a post-commit thought ...
4 years, 4 months ago (2016-07-28 15:16:41 UTC) #39
fdoray
https://codereview.chromium.org/2165663003/diff/260001/base/sequence_checker.h File base/sequence_checker.h (right): https://codereview.chromium.org/2165663003/diff/260001/base/sequence_checker.h#newcode25 base/sequence_checker.h:25: bool CalledOnValidSequencedThread() const { On 2016/07/28 15:16:41, gab wrote: ...
4 years, 4 months ago (2016-07-28 18:10:04 UTC) #40
gab
4 years, 4 months ago (2016-07-29 13:31:37 UTC) #41
Message was sent while issue was closed.
https://codereview.chromium.org/2165663003/diff/260001/base/sequence_checker.h
File base/sequence_checker.h (right):

https://codereview.chromium.org/2165663003/diff/260001/base/sequence_checker....
base/sequence_checker.h:36: // - From a single thread outside of any task.
 On 2016/07/28 18:10:04, fdoray wrote:
> On 2016/07/26 20:49:48, gab wrote:
> > I find this last statement confusing, MessageLoop as SingleThreadTaskRunners
> but
> > they don't have a "sequence" per se (i.e. no SequenceToken), which category
> are
> > they in?
> 
> I think we don't plan to support child single-threaded TaskRunners in
> base/task_scheduler? If that's true, then this comment could become:
> 
> [...] Calls are sequenced when they are issued:
>  * From tasks posted to SequencedTaskRunners bound to the same sequence.
> (task_scheduler and SequencedWorkerPool can have different
SequencedTaskRunners bound to the same sequence)

I don't think this (..) precision is required.

>  * From tasks posted to the same SingleThreadTaskRunner.
>  * From a single thread, outside of any task.

Otherwise yes sgtm (and we can adjust the comment if we decide to allow
SingleThreadTaskRunners to share a sequence later).

Powered by Google App Engine
This is Rietveld 408576698