diff --git a/skynet-src/rwlock.h b/skynet-src/rwlock.h index 45fe02ac..46357764 100644 --- a/skynet-src/rwlock.h +++ b/skynet-src/rwlock.h @@ -29,7 +29,7 @@ rwlock_rlock(struct rwlock *lock) { static inline void rwlock_wlock(struct rwlock *lock) { - __sync_lock_test_and_set(&lock->write,1); + while (__sync_lock_test_and_set(&lock->write,1)) {} while(lock->read) { __sync_synchronize(); }