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

Side by Side Diff: base/threading/platform_thread_win.cc

Issue 2790473006: Replace IOAllowed with WaitAllowed in PlatformThread::Join()
Patch Set: allow in IOThreadPreCleanup() Created 3 years, 8 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
« no previous file with comments | « base/threading/platform_thread_posix.cc ('k') | base/threading/thread_restrictions.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 #include "base/threading/platform_thread.h" 5 #include "base/threading/platform_thread.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/debug/activity_tracker.h" 9 #include "base/debug/activity_tracker.h"
10 #include "base/debug/alias.h" 10 #include "base/debug/alias.h"
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 // static 218 // static
219 bool PlatformThread::CreateNonJoinableWithPriority(size_t stack_size, 219 bool PlatformThread::CreateNonJoinableWithPriority(size_t stack_size,
220 Delegate* delegate, 220 Delegate* delegate,
221 ThreadPriority priority) { 221 ThreadPriority priority) {
222 return CreateThreadInternal(stack_size, delegate, nullptr /* non-joinable */, 222 return CreateThreadInternal(stack_size, delegate, nullptr /* non-joinable */,
223 priority); 223 priority);
224 } 224 }
225 225
226 // static 226 // static
227 void PlatformThread::Join(PlatformThreadHandle thread_handle) { 227 void PlatformThread::Join(PlatformThreadHandle thread_handle) {
228 DCHECK(thread_handle.platform_handle());
229
230 // Joining another thread may block the current thread for a long time, since
231 // the thread referred to by |thread_handle| may still be running long-lived /
232 // blocking tasks.
233 base::ThreadRestrictions::AssertWaitAllowed();
234
228 // Record the event that this thread is blocking upon (for hang diagnosis). 235 // Record the event that this thread is blocking upon (for hang diagnosis).
229 base::debug::ScopedThreadJoinActivity thread_activity(&thread_handle); 236 base::debug::ScopedThreadJoinActivity thread_activity(&thread_handle);
230 237
231 DCHECK(thread_handle.platform_handle());
232 // TODO(willchan): Enable this check once I can get it to work for Windows
233 // shutdown.
234 // Joining another thread may block the current thread for a long time, since
235 // the thread referred to by |thread_handle| may still be running long-lived /
236 // blocking tasks.
237 #if 0
238 base::ThreadRestrictions::AssertIOAllowed();
239 #endif
240
241 // Wait for the thread to exit. It should already have terminated but make 238 // Wait for the thread to exit. It should already have terminated but make
242 // sure this assumption is valid. 239 // sure this assumption is valid.
243 CHECK_EQ(WAIT_OBJECT_0, 240 CHECK_EQ(WAIT_OBJECT_0,
244 WaitForSingleObject(thread_handle.platform_handle(), INFINITE)); 241 WaitForSingleObject(thread_handle.platform_handle(), INFINITE));
245 CloseHandle(thread_handle.platform_handle()); 242 CloseHandle(thread_handle.platform_handle());
246 } 243 }
247 244
248 // static 245 // static
249 void PlatformThread::Detach(PlatformThreadHandle thread_handle) { 246 void PlatformThread::Detach(PlatformThreadHandle thread_handle) {
250 CloseHandle(thread_handle.platform_handle()); 247 CloseHandle(thread_handle.platform_handle());
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 return ThreadPriority::REALTIME_AUDIO; 298 return ThreadPriority::REALTIME_AUDIO;
302 case THREAD_PRIORITY_ERROR_RETURN: 299 case THREAD_PRIORITY_ERROR_RETURN:
303 DPCHECK(false) << "GetThreadPriority error"; // Falls through. 300 DPCHECK(false) << "GetThreadPriority error"; // Falls through.
304 default: 301 default:
305 NOTREACHED() << "Unexpected priority: " << priority; 302 NOTREACHED() << "Unexpected priority: " << priority;
306 return ThreadPriority::NORMAL; 303 return ThreadPriority::NORMAL;
307 } 304 }
308 } 305 }
309 306
310 } // namespace base 307 } // namespace base
OLDNEW
« no previous file with comments | « base/threading/platform_thread_posix.cc ('k') | base/threading/thread_restrictions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698