mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-24 02:12:09 -05:00
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:
parent
b5fc1fcb46
commit
482611766a
2 changed files with 10 additions and 9 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue