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

Side by Side Diff: webrtc/system_wrappers/interface/thread_wrapper.h

Issue 1413333002: system_wrappers: rename interface -> include (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebased again! Created 5 years, 1 month 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
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 // System independant wrapper for spawning threads
12 // Note: the spawned thread will loop over the callback function until stopped.
13 // Note: The callback function is expected to return every 2 seconds or more
14 // often.
15
16 #ifndef WEBRTC_SYSTEM_WRAPPERS_INTERFACE_THREAD_WRAPPER_H_
17 #define WEBRTC_SYSTEM_WRAPPERS_INTERFACE_THREAD_WRAPPER_H_
18
19 #if defined(WEBRTC_WIN)
20 #include <windows.h>
21 #endif
22
23 #include "webrtc/base/scoped_ptr.h"
24 #include "webrtc/common_types.h"
25 #include "webrtc/typedefs.h"
26
27 namespace webrtc {
28
29 // Callback function that the spawned thread will enter once spawned.
30 // A return value of false is interpreted as that the function has no
31 // more work to do and that the thread can be released.
32 typedef bool(*ThreadRunFunction)(void*);
33
34 enum ThreadPriority {
35 #ifdef WEBRTC_WIN
36 kLowPriority = THREAD_PRIORITY_BELOW_NORMAL,
37 kNormalPriority = THREAD_PRIORITY_NORMAL,
38 kHighPriority = THREAD_PRIORITY_ABOVE_NORMAL,
39 kHighestPriority = THREAD_PRIORITY_HIGHEST,
40 kRealtimePriority = THREAD_PRIORITY_TIME_CRITICAL
41 #else
42 kLowPriority = 1,
43 kNormalPriority = 2,
44 kHighPriority = 3,
45 kHighestPriority = 4,
46 kRealtimePriority = 5
47 #endif
48 };
49
50 // Represents a simple worker thread. The implementation must be assumed
51 // to be single threaded, meaning that all methods of the class, must be
52 // called from the same thread, including instantiation.
53 // TODO(tommi): There's no need for this to be a virtual interface since there's
54 // only ever a single implementation of it.
55 class ThreadWrapper {
56 public:
57 virtual ~ThreadWrapper() {}
58
59 // Factory method. Constructor disabled.
60 //
61 // func Pointer to a, by user, specified callback function.
62 // obj Object associated with the thread. Passed in the callback
63 // function.
64 // prio Thread priority. May require root/admin rights.
65 // thread_name NULL terminated thread name, will be visable in the Windows
66 // debugger.
67 static rtc::scoped_ptr<ThreadWrapper> CreateThread(ThreadRunFunction func,
68 void* obj, const char* thread_name);
69
70 // Get the current thread's thread ID.
71 // NOTE: This is a static method. It returns the id of the calling thread,
72 // *not* the id of the worker thread that a ThreadWrapper instance represents.
73 // TODO(tommi): Move outside of the ThreadWrapper class to avoid confusion.
74 static uint32_t GetThreadId();
75
76 // Tries to spawns a thread and returns true if that was successful.
77 // Additionally, it tries to set thread priority according to the priority
78 // from when CreateThread was called. However, failure to set priority will
79 // not result in a false return value.
80 virtual bool Start() = 0;
81
82 // Stops the spawned thread and waits for it to be reclaimed with a timeout
83 // of two seconds. Will return false if the thread was not reclaimed.
84 // Multiple tries to Stop are allowed (e.g. to wait longer than 2 seconds).
85 // It's ok to call Stop() even if the spawned thread has been reclaimed.
86 virtual bool Stop() = 0;
87
88 // Set the priority of the worker thread. Must be called when thread
89 // is running.
90 virtual bool SetPriority(ThreadPriority priority) = 0;
91 };
92
93 } // namespace webrtc
94
95 #endif // WEBRTC_SYSTEM_WRAPPERS_INTERFACE_THREAD_WRAPPER_H_
OLDNEW
« no previous file with comments | « webrtc/system_wrappers/interface/stringize_macros.h ('k') | webrtc/system_wrappers/interface/tick_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698