summaryrefslogtreecommitdiffstats
path: root/JavaScriptCore/wtf/ThreadingPthreads.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'JavaScriptCore/wtf/ThreadingPthreads.cpp')
-rw-r--r--JavaScriptCore/wtf/ThreadingPthreads.cpp42
1 files changed, 19 insertions, 23 deletions
diff --git a/JavaScriptCore/wtf/ThreadingPthreads.cpp b/JavaScriptCore/wtf/ThreadingPthreads.cpp
index 5a7ff55..0017a6f 100644
--- a/JavaScriptCore/wtf/ThreadingPthreads.cpp
+++ b/JavaScriptCore/wtf/ThreadingPthreads.cpp
@@ -44,6 +44,7 @@
#if !COMPILER(MSVC)
#include <limits.h>
+#include <sched.h>
#include <sys/time.h>
#endif
@@ -57,10 +58,6 @@ typedef HashMap<ThreadIdentifier, pthread_t> ThreadMap;
static Mutex* atomicallyInitializedStaticMutex;
-#if !OS(DARWIN) || PLATFORM(CHROMIUM) || USE(WEB_THREAD)
-static pthread_t mainThread; // The thread that was the first to call initializeThreading(), which must be the main thread.
-#endif
-
void clearPthreadHandleForIdentifier(ThreadIdentifier);
static Mutex& threadMapMutex()
@@ -71,15 +68,12 @@ static Mutex& threadMapMutex()
void initializeThreading()
{
- if (!atomicallyInitializedStaticMutex) {
- atomicallyInitializedStaticMutex = new Mutex;
- threadMapMutex();
- initializeRandomNumberGenerator();
-#if !OS(DARWIN) || PLATFORM(CHROMIUM) || USE(WEB_THREAD)
- mainThread = pthread_self();
-#endif
- initializeMainThread();
- }
+ if (atomicallyInitializedStaticMutex)
+ return;
+
+ atomicallyInitializedStaticMutex = new Mutex;
+ threadMapMutex();
+ initializeRandomNumberGenerator();
}
void lockAtomicallyInitializedStaticMutex()
@@ -228,6 +222,11 @@ void detachThread(ThreadIdentifier threadID)
pthread_detach(pthreadHandle);
}
+void yield()
+{
+ sched_yield();
+}
+
ThreadIdentifier currentThread()
{
ThreadIdentifier id = ThreadIdentifierData::identifier();
@@ -240,18 +239,15 @@ ThreadIdentifier currentThread()
return id;
}
-bool isMainThread()
-{
-#if OS(DARWIN) && !PLATFORM(CHROMIUM) && !USE(WEB_THREAD)
- return pthread_main_np();
-#else
- return pthread_equal(pthread_self(), mainThread);
-#endif
-}
-
Mutex::Mutex()
{
- pthread_mutex_init(&m_mutex, NULL);
+ pthread_mutexattr_t attr;
+ pthread_mutexattr_init(&attr);
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL);
+
+ pthread_mutex_init(&m_mutex, &attr);
+
+ pthread_mutexattr_destroy(&attr);
}
Mutex::~Mutex()