# HG changeset patch
# User Pavel Pautov
# Date 1642642654 28800
# Node ID 7752d852306613434d64ba14e01c67ff3b1c7726
# Parent aeab41dfd2606dd36cabbf01f1472726e27e8aea
Core: simplify reader lock release.
diff -r aeab41dfd260 -r 7752d8523066 src/core/ngx_rwlock.c
--- a/src/core/ngx_rwlock.c Mon Jan 17 17:05:12 2022 +0300
+++ b/src/core/ngx_rwlock.c Wed Jan 19 17:37:34 2022 -0800
@@ -89,22 +89,10 @@
void
ngx_rwlock_unlock(ngx_atomic_t *lock)
{
- ngx_atomic_uint_t readers;
-
- readers = *lock;
-
- if (readers == NGX_RWLOCK_WLOCK) {
+ if (*lock == NGX_RWLOCK_WLOCK) {
(void) ngx_atomic_cmp_set(lock, NGX_RWLOCK_WLOCK, 0);
- return;
- }
-
- for ( ;; ) {
-
- if (ngx_atomic_cmp_set(lock, readers, readers - 1)) {
- return;
- }
-
- readers = *lock;
+ } else {
+ (void) ngx_atomic_fetch_add(lock, -1);
}
}