From cb89fca590fb680eeb8364657d3377333aabc9f2 Mon Sep 17 00:00:00 2001 From: roytam1 Date: Fri, 29 Apr 2022 23:27:23 +0800 Subject: [PATCH] ported from UXP: [XPCOM] xpcom Threadpool cleanup (8751960d) --- xpcom/threads/nsThreadPool.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/xpcom/threads/nsThreadPool.cpp b/xpcom/threads/nsThreadPool.cpp index 7e229d386..157628e89 100644 --- a/xpcom/threads/nsThreadPool.cpp +++ b/xpcom/threads/nsThreadPool.cpp @@ -155,8 +155,6 @@ nsThreadPool::ShutdownThread(nsIThread* aThread) NS_IMETHODIMP nsThreadPool::Run() { - LOG(("THRD-P(%p) enter %s\n", this, mName.BeginReading())); - nsCOMPtr current; nsThreadManager::get().GetCurrentThread(getter_AddRefs(current)); @@ -169,6 +167,7 @@ nsThreadPool::Run() { MutexAutoLock lock(mMutex); listener = mListener; + LOG(("THRD-P(%p) enter %s\n", this, mName.BeginReading())); } if (listener) { @@ -223,7 +222,12 @@ nsThreadPool::Run() } } if (event) { - LOG(("THRD-P(%p) %s running [%p]\n", this, mName.BeginReading(), event.get())); +#ifdef DEBUG + { + MutexAutoLock lock(mMutex); + LOG(("THRD-P(%p) %s running [%p]\n", this, mName.BeginReading(), event.get())); + } +#endif event->Run(); } } while (!exitThread); @@ -335,6 +339,7 @@ nsThreadPool::Shutdown() NS_IMETHODIMP nsThreadPool::GetThreadLimit(uint32_t* aValue) { + MutexAutoLock lock(mMutex); *aValue = mThreadLimit; return NS_OK; } @@ -358,6 +363,7 @@ nsThreadPool::SetThreadLimit(uint32_t aValue) NS_IMETHODIMP nsThreadPool::GetIdleThreadLimit(uint32_t* aValue) { + MutexAutoLock lock(mMutex); *aValue = mIdleThreadLimit; return NS_OK; } @@ -382,6 +388,7 @@ nsThreadPool::SetIdleThreadLimit(uint32_t aValue) NS_IMETHODIMP nsThreadPool::GetIdleThreadTimeout(uint32_t* aValue) { + MutexAutoLock lock(mMutex); *aValue = mIdleThreadTimeout; return NS_OK; } @@ -438,11 +445,9 @@ nsThreadPool::SetListener(nsIThreadPoolListener* aListener) NS_IMETHODIMP nsThreadPool::SetName(const nsACString& aName) { - { - MutexAutoLock lock(mMutex); - if (mThreads.Count()) { - return NS_ERROR_NOT_AVAILABLE; - } + MutexAutoLock lock(mMutex); + if (mThreads.Count()) { + return NS_ERROR_NOT_AVAILABLE; } mName = aName;