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

Side by Side Diff: public/platform/WebThread.h

Issue 514193002: Expose platform thread id on WebThread (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 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 | Annotate | Revision Log
« no previous file with comments | « Source/platform/scheduler/SchedulerTest.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the 11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution. 12 * documentation and/or other materials provided with the distribution.
13 * 13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 14 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 17 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 18 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 19 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 20 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 #ifndef WebThread_h 25 #ifndef WebThread_h
26 #define WebThread_h 26 #define WebThread_h
27 27
28 #include "WebCommon.h" 28 #include "WebCommon.h"
29 #include <stdint.h>
29 30
30 namespace blink { 31 namespace blink {
31 32
33 // Always an integer value.
34 typedef uintptr_t PlatformThreadId;
alph 2014/08/28 15:28:43 nit: You can add a STATIC_ASSERT in a .cpp to make
yurys 2014/08/28 16:08:54 Done.
35
32 // Provides an interface to an embedder-defined thread implementation. 36 // Provides an interface to an embedder-defined thread implementation.
33 // 37 //
34 // Deleting the thread blocks until all pending, non-delayed tasks have been 38 // Deleting the thread blocks until all pending, non-delayed tasks have been
35 // run. 39 // run.
36 class BLINK_PLATFORM_EXPORT WebThread { 40 class BLINK_PLATFORM_EXPORT WebThread {
37 public: 41 public:
38 class Task { 42 class Task {
39 public: 43 public:
40 virtual ~Task() { } 44 virtual ~Task() { }
41 virtual void run() = 0; 45 virtual void run() = 0;
42 }; 46 };
43 47
44 class BLINK_PLATFORM_EXPORT TaskObserver { 48 class BLINK_PLATFORM_EXPORT TaskObserver {
45 public: 49 public:
46 virtual ~TaskObserver() { } 50 virtual ~TaskObserver() { }
47 virtual void willProcessTask() = 0; 51 virtual void willProcessTask() = 0;
48 virtual void didProcessTask() = 0; 52 virtual void didProcessTask() = 0;
49 }; 53 };
50 54
51 // postTask() and postDelayedTask() take ownership of the passed Task 55 // postTask() and postDelayedTask() take ownership of the passed Task
52 // object. It is safe to invoke postTask() and postDelayedTask() from any 56 // object. It is safe to invoke postTask() and postDelayedTask() from any
53 // thread. 57 // thread.
54 virtual void postTask(Task*) = 0; 58 virtual void postTask(Task*) = 0;
55 virtual void postDelayedTask(Task*, long long delayMs) = 0; 59 virtual void postDelayedTask(Task*, long long delayMs) = 0;
56 60
57 virtual bool isCurrentThread() const = 0; 61 virtual bool isCurrentThread() const = 0;
62 virtual PlatformThreadId threadId() const { return 0; }
58 63
59 virtual void addTaskObserver(TaskObserver*) { } 64 virtual void addTaskObserver(TaskObserver*) { }
60 virtual void removeTaskObserver(TaskObserver*) { } 65 virtual void removeTaskObserver(TaskObserver*) { }
61 66
62 // enterRunLoop() processes tasks posted to this WebThread. This call does n ot return until some task calls exitRunLoop(). 67 // enterRunLoop() processes tasks posted to this WebThread. This call does n ot return until some task calls exitRunLoop().
63 // WebThread does not support nesting, meaning that once the run loop is ent ered for a given WebThread it is not valid to 68 // WebThread does not support nesting, meaning that once the run loop is ent ered for a given WebThread it is not valid to
64 // call enterRunLoop() again. 69 // call enterRunLoop() again.
65 virtual void enterRunLoop() = 0; 70 virtual void enterRunLoop() = 0;
66 71
67 // exitRunLoop() runs tasks until there are no tasks available to run, then returns control to the caller of enterRunLoop(). 72 // exitRunLoop() runs tasks until there are no tasks available to run, then returns control to the caller of enterRunLoop().
68 // Must be called when the WebThread is running. 73 // Must be called when the WebThread is running.
69 virtual void exitRunLoop() = 0; 74 virtual void exitRunLoop() = 0;
70 75
71 virtual ~WebThread() { } 76 virtual ~WebThread() { }
72 }; 77 };
73 78
74 } // namespace blink 79 } // namespace blink
75 80
76 #endif 81 #endif
OLDNEW
« no previous file with comments | « Source/platform/scheduler/SchedulerTest.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698