| Index: base/tracked_objects.h
|
| ===================================================================
|
| --- base/tracked_objects.h (revision 110865)
|
| +++ base/tracked_objects.h (working copy)
|
| @@ -532,6 +532,11 @@
|
| // the code).
|
| static TrackedTime Now();
|
|
|
| + // This function can be called at process termination to validate that thread
|
| + // cleanup routines have been called for at least some number of named
|
| + // threads.
|
| + static void EnsureCleanupWasCalled(int major_threads_shutdown_count);
|
| +
|
| private:
|
| // Allow only tests to call ShutdownSingleThreadedCleanup. We NEVER call it
|
| // in production code.
|
| @@ -594,19 +599,26 @@
|
| // The list is traversed by about:profiler when it needs to snapshot data.
|
| // This is only accessed while list_lock_ is held.
|
| static ThreadData* all_thread_data_list_head_;
|
| - // The next available thread number. This should only be accessed when the
|
| - // list_lock_ is held.
|
| - static int thread_number_counter_;
|
| +
|
| + // The next available worker thread number. This should only be accessed when
|
| + // the list_lock_ is held.
|
| + static int worker_thread_data_creation_count_;
|
| +
|
| + // The number of times TLS has called us back to cleanup a ThreadData
|
| + // instance. This is only accessed while list_lock_ is held.
|
| + static int cleanup_count_;
|
| +
|
| // Incarnation sequence number, indicating how many times (during unittests)
|
| // we've either transitioned out of UNINITIALIZED, or into that state. This
|
| // value is only accessed while the list_lock_ is held.
|
| static int incarnation_counter_;
|
| +
|
| // Protection for access to all_thread_data_list_head_, and to
|
| // unregistered_thread_data_pool_. This lock is leaked at shutdown.
|
| // The lock is very infrequently used, so we can afford to just make a lazy
|
| // instance and be safe.
|
| static base::LazyInstance<base::Lock,
|
| - base::LeakyLazyInstanceTraits<base::Lock> > list_lock_;
|
| + base::LeakyLazyInstanceTraits<base::Lock> > list_lock_;
|
|
|
| // Record of what the incarnation_counter_ was when this instance was created.
|
| // If the incarnation_counter_ has changed, then we avoid pushing into the
|
| @@ -655,7 +667,7 @@
|
| // thread, or reading from another thread. For reading from this thread we
|
| // don't need a lock, as there is no potential for a conflict since the
|
| // writing is only done from this thread.
|
| - mutable base::Lock lock_;
|
| + mutable base::Lock map_lock_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ThreadData);
|
| };
|
|
|