Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CONTENT_BROWSER_BROWSER_THREAD_H_ | 5 #ifndef CONTENT_BROWSER_BROWSER_THREAD_H_ |
| 6 #define CONTENT_BROWSER_BROWSER_THREAD_H_ | 6 #define CONTENT_BROWSER_BROWSER_THREAD_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/synchronization/lock.h" | 10 #include "base/synchronization/lock.h" |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 161 | 161 |
| 162 // Callable on any thread. Returns whether the threads message loop is valid. | 162 // Callable on any thread. Returns whether the threads message loop is valid. |
| 163 // If this returns false it means the thread is in the process of shutting | 163 // If this returns false it means the thread is in the process of shutting |
| 164 // down. | 164 // down. |
| 165 static bool IsMessageLoopValid(ID identifier); | 165 static bool IsMessageLoopValid(ID identifier); |
| 166 | 166 |
| 167 // If the current message loop is one of the known threads, returns true and | 167 // If the current message loop is one of the known threads, returns true and |
| 168 // sets identifier to its ID. Otherwise returns false. | 168 // sets identifier to its ID. Otherwise returns false. |
| 169 static bool GetCurrentThreadIdentifier(ID* identifier); | 169 static bool GetCurrentThreadIdentifier(ID* identifier); |
| 170 | 170 |
| 171 // Runs all the current pending tasks on the given thread's message loop. | |
| 172 // This call blocks until those tasks are executed, effectively making the | |
| 173 // current thread block on |identifier|. Avoid using this. | |
| 174 // Returns false if |identifier| is the current thread, or a task couldn't be | |
| 175 // posted to |identifier|'s message loop. | |
| 176 static bool WaitForPendingTasksOn(ID identifier); | |
|
jam
2011/10/14 17:19:30
this is most certainly a function that we don't wa
| |
| 177 | |
| 171 // Callers can hold on to a refcounted MessageLoopProxy beyond the lifetime | 178 // Callers can hold on to a refcounted MessageLoopProxy beyond the lifetime |
| 172 // of the thread. | 179 // of the thread. |
| 173 static scoped_refptr<base::MessageLoopProxy> GetMessageLoopProxyForThread( | 180 static scoped_refptr<base::MessageLoopProxy> GetMessageLoopProxyForThread( |
| 174 ID identifier); | 181 ID identifier); |
| 175 | 182 |
| 176 // Use these templates in conjuction with RefCountedThreadSafe when you want | 183 // Use these templates in conjuction with RefCountedThreadSafe when you want |
| 177 // to ensure that an object is deleted on a specific thread. This is needed | 184 // to ensure that an object is deleted on a specific thread. This is needed |
| 178 // when an object can hop between threads (i.e. IO -> FILE -> IO), and thread | 185 // when an object can hop between threads (i.e. IO -> FILE -> IO), and thread |
| 179 // switching delays can mean that the final IO tasks executes before the FILE | 186 // switching delays can mean that the final IO tasks executes before the FILE |
| 180 // task's stack unwinds. This would lead to the object destructing on the | 187 // task's stack unwinds. This would lead to the object destructing on the |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 242 static base::Lock lock_; | 249 static base::Lock lock_; |
| 243 | 250 |
| 244 // An array of the BrowserThread objects. This array is protected by |lock_|. | 251 // An array of the BrowserThread objects. This array is protected by |lock_|. |
| 245 // The threads are not owned by this array. Typically, the threads are owned | 252 // The threads are not owned by this array. Typically, the threads are owned |
| 246 // on the UI thread by the g_browser_process object. BrowserThreads remove | 253 // on the UI thread by the g_browser_process object. BrowserThreads remove |
| 247 // themselves from this array upon destruction. | 254 // themselves from this array upon destruction. |
| 248 static BrowserThread* browser_threads_[ID_COUNT]; | 255 static BrowserThread* browser_threads_[ID_COUNT]; |
| 249 }; | 256 }; |
| 250 | 257 |
| 251 #endif // CONTENT_BROWSER_BROWSER_THREAD_H_ | 258 #endif // CONTENT_BROWSER_BROWSER_THREAD_H_ |
| OLD | NEW |