瀏覽代碼

LibPthread: Okay I'm dumb, let's convert mutex locks into Atomic<u32>&

Andreas Kling 5 年之前
父節點
當前提交
a12c2df43f
共有 1 個文件被更改,包括 4 次插入4 次删除
  1. 4 4
      Libraries/LibPthread/pthread.cpp

+ 4 - 4
Libraries/LibPthread/pthread.cpp

@@ -114,11 +114,11 @@ int pthread_mutex_destroy(pthread_mutex_t*)
 
 
 int pthread_mutex_lock(pthread_mutex_t* mutex)
 int pthread_mutex_lock(pthread_mutex_t* mutex)
 {
 {
-    auto* atomic = reinterpret_cast<Atomic<u32>*>(mutex->lock);
+    auto& atomic = reinterpret_cast<Atomic<u32>&>(mutex->lock);
     pthread_t this_thread = pthread_self();
     pthread_t this_thread = pthread_self();
     for (;;) {
     for (;;) {
         u32 expected = false;
         u32 expected = false;
-        if (!atomic->compare_exchange_strong(expected, true, AK::memory_order_acq_rel)) {
+        if (!atomic.compare_exchange_strong(expected, true, AK::memory_order_acq_rel)) {
             if (mutex->type == PTHREAD_MUTEX_RECURSIVE && mutex->owner == this_thread) {
             if (mutex->type == PTHREAD_MUTEX_RECURSIVE && mutex->owner == this_thread) {
                 mutex->level++;
                 mutex->level++;
                 return 0;
                 return 0;
@@ -134,9 +134,9 @@ int pthread_mutex_lock(pthread_mutex_t* mutex)
 
 
 int pthread_mutex_trylock(pthread_mutex_t* mutex)
 int pthread_mutex_trylock(pthread_mutex_t* mutex)
 {
 {
-    auto* atomic = reinterpret_cast<Atomic<u32>*>(mutex->lock);
+    auto& atomic = reinterpret_cast<Atomic<u32>&>(mutex->lock);
     u32 expected = false;
     u32 expected = false;
-    if (!atomic->compare_exchange_strong(expected, true, AK::memory_order_acq_rel)) {
+    if (!atomic.compare_exchange_strong(expected, true, AK::memory_order_acq_rel)) {
         if (mutex->type == PTHREAD_MUTEX_RECURSIVE && mutex->owner == pthread_self()) {
         if (mutex->type == PTHREAD_MUTEX_RECURSIVE && mutex->owner == pthread_self()) {
             mutex->level++;
             mutex->level++;
             return 0;
             return 0;