Index: src/platform-posix.cc |
diff --git a/src/platform-posix.cc b/src/platform-posix.cc |
index 0ec458905892e9488e45ee2e58df059bf60a841c..439140ac0adc3563a04ccb068114c7071c91c99b 100644 |
--- a/src/platform-posix.cc |
+++ b/src/platform-posix.cc |
@@ -565,6 +565,8 @@ class Thread::PlatformData : public Malloced { |
public: |
PlatformData() : thread_(kNoThread) {} |
pthread_t thread_; // Thread handle for pthread. |
+ // Synchronizes thread creation |
+ Mutex thread_creation_mutex_; |
}; |
Thread::Thread(const Options& options) |
@@ -583,10 +585,6 @@ Thread::~Thread() { |
} |
-// Synchronizes thread creation |
-static Mutex thread_creation_mutex_; |
- |
- |
static void SetThreadName(const char* name) { |
#if V8_OS_DRAGONFLYBSD || V8_OS_FREEBSD || V8_OS_OPENBSD |
pthread_set_name_np(pthread_self(), name); |
@@ -619,7 +617,7 @@ static void* ThreadEntry(void* arg) { |
// We take the lock here to make sure that pthread_create finished first since |
// we don't know which thread will run first (the original thread or the new |
// one). |
- { LockGuard<Mutex> lock_guard(&thread_creation_mutex_); } |
+ { LockGuard<Mutex> lock_guard(&thread->data()->thread_creation_mutex_); } |
SetThreadName(thread->name()); |
ASSERT(thread->data()->thread_ != kNoThread); |
thread->NotifyStartedAndRun(); |
@@ -647,7 +645,7 @@ void Thread::Start() { |
} |
#endif |
{ |
- LockGuard<Mutex> lock_guard(&thread_creation_mutex_); |
+ LockGuard<Mutex> lock_guard(&data_->thread_creation_mutex_); |
result = pthread_create(&data_->thread_, &attr, ThreadEntry, this); |
} |
ASSERT_EQ(0, result); |