LibThread: Store thread id as pthread_t, use pthread_self()

Serenity calls pthread_self() for gettid() anyway but this makes it
portable.
This commit is contained in:
joshua stein 2020-01-30 17:46:13 -06:00 committed by Andreas Kling
parent b5fc1fcb46
commit 482611766a
2 changed files with 10 additions and 9 deletions

View file

@ -37,7 +37,7 @@ LibThread::Thread::Thread(Function<int()> action, StringView thread_name)
LibThread::Thread::~Thread() LibThread::Thread::~Thread()
{ {
if (m_tid != -1) { if (m_tid) {
dbg() << "trying to destroy a running thread!"; dbg() << "trying to destroy a running thread!";
ASSERT_NOT_REACHED(); ASSERT_NOT_REACHED();
} }
@ -50,8 +50,8 @@ void LibThread::Thread::start()
nullptr, nullptr,
[](void* arg) -> void* { [](void* arg) -> void* {
Thread* self = static_cast<Thread*>(arg); Thread* self = static_cast<Thread*>(arg);
int exit_code = self->m_action(); size_t exit_code = self->m_action();
self->m_tid = -1; self->m_tid = 0;
pthread_exit((void*)exit_code); pthread_exit((void*)exit_code);
return (void*)exit_code; return (void*)exit_code;
}, },
@ -65,10 +65,10 @@ void LibThread::Thread::start()
dbg() << "Started a thread, tid = " << m_tid; dbg() << "Started a thread, tid = " << m_tid;
} }
void LibThread::Thread::quit(int code) void LibThread::Thread::quit(void *code)
{ {
ASSERT(m_tid == gettid()); ASSERT(m_tid == pthread_self());
m_tid = -1; m_tid = 0;
pthread_exit((void*)code); pthread_exit(code);
} }

View file

@ -29,6 +29,7 @@
#include <AK/Function.h> #include <AK/Function.h>
#include <AK/String.h> #include <AK/String.h>
#include <LibCore/CObject.h> #include <LibCore/CObject.h>
#include <pthread.h>
namespace LibThread { namespace LibThread {
@ -40,11 +41,11 @@ public:
virtual ~Thread(); virtual ~Thread();
void start(); void start();
void quit(int code = 0); void quit(void *code = 0);
private: private:
Function<int()> m_action; Function<int()> m_action;
int m_tid { -1 }; pthread_t m_tid;
String m_thread_name; String m_thread_name;
}; };