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

Side by Side Diff: Source/wtf/ThreadingPthreads.cpp

Issue 874203002: Add a thread-safety assertion in DEFINE_STATIC_LOCAL (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebased Created 5 years, 10 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007, 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2007 Justin Haygood (jhaygood@reaktix.com) 3 * Copyright (C) 2007 Justin Haygood (jhaygood@reaktix.com)
4 * Copyright (C) 2011 Research In Motion Limited. All rights reserved. 4 * Copyright (C) 2011 Research In Motion Limited. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 9 *
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 int result = pthread_cond_signal(&m_condition); 239 int result = pthread_cond_signal(&m_condition);
240 ASSERT_UNUSED(result, !result); 240 ASSERT_UNUSED(result, !result);
241 } 241 }
242 242
243 void ThreadCondition::broadcast() 243 void ThreadCondition::broadcast()
244 { 244 {
245 int result = pthread_cond_broadcast(&m_condition); 245 int result = pthread_cond_broadcast(&m_condition);
246 ASSERT_UNUSED(result, !result); 246 ASSERT_UNUSED(result, !result);
247 } 247 }
248 248
249 #if ENABLE(ASSERT)
250 static bool s_threadCreated = false;
251
252 struct ThreadCreationRecorder {
253 ThreadCreationRecorder()
254 {
255 ASSERT(!s_threadCreated);
eroman 2015/01/30 18:02:30 Not sure how valuable this assertion is. Probably
kinuko 2015/02/03 06:57:34 Done.
256 s_threadCreated = true;
257 }
258 };
259
260 bool isAtomicallyInitializedStaticMutexLockHeld()
261 {
262 return atomicallyInitializedStaticMutex && atomicallyInitializedStaticMutex- >locked();
263 }
264
265 bool isBeforeThreadCreated()
266 {
267 return !s_threadCreated;
268 }
269
270 void willCreateThread()
271 {
272 static ThreadCreationRecorder recorder;
273 }
274 #endif
275
249 } // namespace WTF 276 } // namespace WTF
250 277
251 #endif // USE(PTHREADS) 278 #endif // USE(PTHREADS)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698