2 #define _XOPEN_SOURCE 500
3 #define _POSIX_C_SOURCE 200809L
11 err(1
, "In %s" # expr " failed", __PRETTY_FUNCTION__)
13 namespace curl::utils {
16 pthread_rwlockattr_t attr;
18 CHECK(pthread_rwlockattr_init(&attr));
19 pthread_rwlockattr_setkind_np(&attr, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);
21 CHECK(pthread_rwlock_init(&rwlock, &attr));
23 pthread_rwlockattr_destroy(&attr);
27 pthread_rwlock_destroy(&rwlock);
32 pthread_rwlock_wrlock(&rwlock);
38 ret = pthread_rwlock_rdlock(&rwlock);
39 }
while (ret != 0 && errno == EAGAIN);
44 pthread_rwlock_unlock(&rwlock);