Home
last modified time | relevance | path

Searched refs:rwlock (Results 1 - 25 of 59) sorted by relevance

123

/third_party/mesa3d/src/util/
H A Drwlock.h44 SRWLOCK rwlock; member
46 pthread_rwlock_t rwlock;
50 static inline int u_rwlock_init(struct u_rwlock *rwlock) in u_rwlock_init() argument
53 InitializeSRWLock(&rwlock->rwlock); in u_rwlock_init()
56 return pthread_rwlock_init(&rwlock->rwlock, NULL); in u_rwlock_init()
60 static inline int u_rwlock_destroy(struct u_rwlock *rwlock) in u_rwlock_destroy() argument
65 return pthread_rwlock_destroy(&rwlock->rwlock); in u_rwlock_destroy()
69 u_rwlock_rdlock(struct u_rwlock *rwlock) u_rwlock_rdlock() argument
79 u_rwlock_rdunlock(struct u_rwlock *rwlock) u_rwlock_rdunlock() argument
89 u_rwlock_wrlock(struct u_rwlock *rwlock) u_rwlock_wrlock() argument
99 u_rwlock_wrunlock(struct u_rwlock *rwlock) u_rwlock_wrunlock() argument
[all...]
/third_party/libuv/test/
H A Dtest-mutexes.c30 static uv_rwlock_t rwlock; variable
33 /* The mutex and rwlock tests are really poor.
74 uv_rwlock_t rwlock; in TEST_IMPL() local
77 r = uv_rwlock_init(&rwlock); in TEST_IMPL()
80 uv_rwlock_rdlock(&rwlock); in TEST_IMPL()
81 uv_rwlock_rdunlock(&rwlock); in TEST_IMPL()
82 uv_rwlock_wrlock(&rwlock); in TEST_IMPL()
83 uv_rwlock_wrunlock(&rwlock); in TEST_IMPL()
84 uv_rwlock_destroy(&rwlock); in TEST_IMPL()
114 ASSERT_EQ(UV_EBUSY, uv_rwlock_tryrdlock(&rwlock)); in thread_rwlock_trylock_peer()
[all...]
/third_party/musl/libc-test/src/functionalext/supplement/thread/
H A Dpthread_rwlock_timedrdlock.c24 * @tc.desc : Provide correct parameters, test timeout and rwlock
30 pthread_rwlock_t rwlock; in pthread_rwlock_timedrdlock_0100() local
31 pthread_rwlock_init(&rwlock, NULL); in pthread_rwlock_timedrdlock_0100()
37 rev = pthread_rwlock_timedrdlock(&rwlock, &ts); in pthread_rwlock_timedrdlock_0100()
41 pthread_rwlock_unlock(&rwlock); in pthread_rwlock_timedrdlock_0100()
43 pthread_rwlock_destroy(&rwlock); in pthread_rwlock_timedrdlock_0100()
48 * @tc.desc : In the locked (read lock) state, the test times out and rwlock
54 pthread_rwlock_t rwlock; in pthread_rwlock_timedrdlock_0200() local
55 pthread_rwlock_init(&rwlock, NULL); in pthread_rwlock_timedrdlock_0200()
56 int rev = pthread_rwlock_timedrdlock(&rwlock, NUL in pthread_rwlock_timedrdlock_0200()
78 pthread_rwlock_t rwlock; pthread_rwlock_timedrdlock_0300() local
102 pthread_rwlock_t rwlock; pthread_rwlock_timedrdlock_time64_0100() local
[all...]
H A Dpthread_rwlock_timedwrlock.c24 * @tc.desc : Provide correct parameters, test timeout and rwlock
30 pthread_rwlock_t rwlock; in pthread_rwlock_timedwrlock_0100() local
31 pthread_rwlock_init(&rwlock, NULL); in pthread_rwlock_timedwrlock_0100()
37 rev = pthread_rwlock_timedwrlock(&rwlock, &ts); in pthread_rwlock_timedwrlock_0100()
41 pthread_rwlock_unlock(&rwlock); in pthread_rwlock_timedwrlock_0100()
43 pthread_rwlock_destroy(&rwlock); in pthread_rwlock_timedwrlock_0100()
48 * @tc.desc : In the locked (read lock) state, the test times out and rwlock
54 pthread_rwlock_t rwlock; in pthread_rwlock_timedwrlock_0200() local
55 pthread_rwlock_init(&rwlock, NULL); in pthread_rwlock_timedwrlock_0200()
56 int rev = pthread_rwlock_timedrdlock(&rwlock, NUL in pthread_rwlock_timedwrlock_0200()
78 pthread_rwlock_t rwlock; pthread_rwlock_timedwrlock_0300() local
102 pthread_rwlock_t rwlock; pthread_rwlock_timedwrlock_time64_0100() local
[all...]
H A Dpthread_rwlock_tryrdlock.c26 pthread_rwlock_t rwlock; in pthread_rwlock_tryrdlock_0100() local
29 pthread_rwlock_init(&rwlock, &rwlockattr); in pthread_rwlock_tryrdlock_0100()
31 int ret = pthread_rwlock_tryrdlock(&rwlock); in pthread_rwlock_tryrdlock_0100()
33 ret = pthread_rwlock_unlock(&rwlock); in pthread_rwlock_tryrdlock_0100()
36 pthread_rwlock_destroy(&rwlock); in pthread_rwlock_tryrdlock_0100()
47 pthread_rwlock_t rwlock; in pthread_rwlock_tryrdlock_0200() local
50 pthread_rwlock_init(&rwlock, &rwlockattr); in pthread_rwlock_tryrdlock_0200()
52 int ret = pthread_rwlock_wrlock(&rwlock); in pthread_rwlock_tryrdlock_0200()
55 ret = pthread_rwlock_tryrdlock(&rwlock); in pthread_rwlock_tryrdlock_0200()
58 ret = pthread_rwlock_unlock(&rwlock); in pthread_rwlock_tryrdlock_0200()
[all...]
H A Dpthread_rwlock_trywrlock.c26 pthread_rwlock_t rwlock; in pthread_rwlock_trywrlock_0100() local
29 pthread_rwlock_init(&rwlock, &rwlockattr); in pthread_rwlock_trywrlock_0100()
31 int ret = pthread_rwlock_trywrlock(&rwlock); in pthread_rwlock_trywrlock_0100()
33 ret = pthread_rwlock_unlock(&rwlock); in pthread_rwlock_trywrlock_0100()
36 pthread_rwlock_destroy(&rwlock); in pthread_rwlock_trywrlock_0100()
47 pthread_rwlock_t rwlock; in pthread_rwlock_trywrlock_0200() local
50 pthread_rwlock_init(&rwlock, &rwlockattr); in pthread_rwlock_trywrlock_0200()
52 int ret = pthread_rwlock_wrlock(&rwlock); in pthread_rwlock_trywrlock_0200()
55 ret = pthread_rwlock_trywrlock(&rwlock); in pthread_rwlock_trywrlock_0200()
58 ret = pthread_rwlock_unlock(&rwlock); in pthread_rwlock_trywrlock_0200()
[all...]
/third_party/skia/third_party/externals/swiftshader/third_party/llvm-10.0/llvm/lib/Support/
H A DRWMutex.cpp44 pthread_rwlock_t* rwlock =
49 bzero(rwlock, sizeof(pthread_rwlock_t));
52 // Initialize the rwlock
53 int errorcode = pthread_rwlock_init(rwlock, nullptr);
58 data_ = rwlock;
64 pthread_rwlock_t* rwlock = static_cast<pthread_rwlock_t*>(data_);
65 assert(rwlock != nullptr);
66 pthread_rwlock_destroy(rwlock);
67 free(rwlock);
73 pthread_rwlock_t* rwlock
[all...]
/third_party/ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_rwlock_unlock/
H A D1-1.c7 * Test that pthread_rwlock_unlock(pthread_rwlock_t *rwlock)
10 * read-write lock object referenced by rwlock
18 * 1. Initialize a pthread_rwlock_t object 'rwlock' with pthread_rwlock_init()
19 * 2. Main thread read lock 'rwlock'
20 * 3. Create a child thread, the thread read lock 'rwlock', should not block
21 * 4. Child thread unlock 'rwlock', while the main thread still hold the read lock.
22 * 5. Child thread read lock 'rwlock' again, should succeed, then unlock again
23 * 6. Child thread write lock 'rwlock', should block
24 * 7. Main thread unlock the read lock, the 'rwlock' is in unlocked state
33 static pthread_rwlock_t rwlock; variable
[all...]
H A D3-1.c22 * 2. Main thread write lock 'rwlock'
28 * 7. Main thread release the 'rwlock', make sure the threads got the lock in the order
47 static pthread_rwlock_t rwlock; variable
85 rc = pthread_rwlock_rdlock(&rwlock); in fn_rd()
102 if (pthread_rwlock_unlock(&rwlock) != 0) { in fn_rd()
120 rc = pthread_rwlock_wrlock(&rwlock); in fn_wr_1()
138 if (pthread_rwlock_unlock(&rwlock) != 0) { in fn_wr_1()
157 rc = pthread_rwlock_wrlock(&rwlock); in fn_wr_2()
174 if (pthread_rwlock_unlock(&rwlock) != 0) { in fn_wr_2()
198 if (pthread_rwlock_init(&rwlock, NUL in main()
[all...]
H A D2-1.c7 * Test that pthread_rwlock_unlock(pthread_rwlock_t *rwlock)
10 * read-write lock object referenced by rwlock
18 * 1. Initialize a pthread_rwlock_t object 'rwlock' with pthread_rwlock_init()
19 * 2. Main thread write lock 'rwlock'
20 * 3. Create a child thread, the thread write lock 'rwlock', should block
21 * 4. Main thread unlock the write lock, the 'rwlock' is in unlocked state
30 static pthread_rwlock_t rwlock; variable
50 if (pthread_rwlock_wrlock(&rwlock) != 0) { in fn_wr()
56 rc = pthread_rwlock_unlock(&rwlock); in fn_wr()
74 if (pthread_rwlock_init(&rwlock, NUL in main()
[all...]
/third_party/node/deps/openssl/openssl/crypto/
H A Dthreads_win.c44 CRYPTO_win_rwlock *rwlock; in CRYPTO_THREAD_lock_new() local
48 rwlock = lock; in CRYPTO_THREAD_lock_new()
49 InitializeSRWLock(&rwlock->lock); in CRYPTO_THREAD_lock_new()
74 CRYPTO_win_rwlock *rwlock = lock; in CRYPTO_THREAD_read_lock() local
76 AcquireSRWLockShared(&rwlock->lock); in CRYPTO_THREAD_read_lock()
86 CRYPTO_win_rwlock *rwlock = lock; in CRYPTO_THREAD_write_lock() local
88 AcquireSRWLockExclusive(&rwlock->lock); in CRYPTO_THREAD_write_lock()
89 rwlock->exclusive = 1; in CRYPTO_THREAD_write_lock()
99 CRYPTO_win_rwlock *rwlock = lock; in CRYPTO_THREAD_unlock() local
101 if (rwlock in CRYPTO_THREAD_unlock()
[all...]
/third_party/openssl/crypto/
H A Dthreads_win.c44 CRYPTO_win_rwlock *rwlock; in CRYPTO_THREAD_lock_new() local
48 rwlock = lock; in CRYPTO_THREAD_lock_new()
49 InitializeSRWLock(&rwlock->lock); in CRYPTO_THREAD_lock_new()
74 CRYPTO_win_rwlock *rwlock = lock; in CRYPTO_THREAD_read_lock() local
76 AcquireSRWLockShared(&rwlock->lock); in CRYPTO_THREAD_read_lock()
86 CRYPTO_win_rwlock *rwlock = lock; in CRYPTO_THREAD_write_lock() local
88 AcquireSRWLockExclusive(&rwlock->lock); in CRYPTO_THREAD_write_lock()
89 rwlock->exclusive = 1; in CRYPTO_THREAD_write_lock()
99 CRYPTO_win_rwlock *rwlock = lock; in CRYPTO_THREAD_unlock() local
101 if (rwlock in CRYPTO_THREAD_unlock()
[all...]
/third_party/skia/third_party/externals/dng_sdk/source/
H A Ddng_pthread.h130 int dng_pthread_rwlock_destroy(dng_pthread_rwlock_t * rwlock);
131 int dng_pthread_rwlock_init(dng_pthread_rwlock_t * rwlock, const pthread_rwlockattr_t * attrs);
132 int dng_pthread_rwlock_rdlock(dng_pthread_rwlock_t * rwlock);
133 int dng_pthread_rwlock_tryrdlock(dng_pthread_rwlock_t * rwlock);
134 int dng_pthread_rwlock_trywrlock(dng_pthread_rwlock_t * rwlock);
135 int dng_pthread_rwlock_unlock(dng_pthread_rwlock_t * rwlock);
136 int dng_pthread_rwlock_wrlock(dng_pthread_rwlock_t * rwlock);
141 int dng_pthread_rwlock_destroy(dng_pthread_rwlock_t * rwlock);
142 int dng_pthread_rwlock_init(dng_pthread_rwlock_t * rwlock, const pthread_rwlockattr_t * attrs);
143 int dng_pthread_rwlock_rdlock(dng_pthread_rwlock_t * rwlock);
[all...]
/third_party/ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_rwlock_tryrdlock/
H A D1-1.c7 * Test that pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock)
19 * 1. Initialize a pthread_rwlock_t object 'rwlock' with pthread_rwlock_init()
20 * 2. Main thread read lock 'rwlock'
21 * 3. Create a child thread, the thread read lock 'rwlock' using pthread_rwlock_tryrdlock(), should success
22 * 4. Main thread unlock 'rwlock'
23 * 5. Main thread write lock 'rwlock'
24 * 6. Create child thread to read lock 'rwlock' with pthread_rwlock_tryrdlock(), should not block and get EBUSY
25 * 7. Main thread unlock 'rwlock'
34 static pthread_rwlock_t rwlock; variable
53 rc = pthread_rwlock_tryrdlock(&rwlock); in fn_rd_1()
[all...]
/third_party/ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_rwlock_rdlock/
H A D1-1.c7 * Test that pthread_rwlock_rdlock(pthread_rwlock_t *rwlock)
10 * read-write lock referenced by rwlock. The calling thread acquires
18 * 1. Initialize a pthread_rwlock_t object 'rwlock' with pthread_rwlock_init()
19 * 2. Main thread read lock 'rwlock'
20 * 3. Create a child thread. The thread read lock 'rwlock', should not block. Then unlock it.
21 * 4. Main thread unlock 'rwlock'
22 * 5. Main thread write lock 'rwlock'
23 * 6. Create child thread to read lock 'rwlock', should block
24 * 7. Main thread unlock 'rwlock'
32 static pthread_rwlock_t rwlock; variable
[all...]
/third_party/ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_rwlock_wrlock/
H A D1-1.c7 * Test pthread_rwlock_wrlock(pthread_rwlock_t *rwlock)
10 * 'rwlock'. The calling thread acquires the write lock if no other thread
11 * (reader or writer) holds the read-write lock 'rwlock'. Otherwise, the thread
15 * 1. Initialize a pthread_rwlock_t object 'rwlock' with pthread_rwlock_init()
16 * 2. Main thread lock 'rwlock' for reading with pthread_rwlock_rdlock()
17 * 3. Create a child thread, the thread lock 'rwlock' for writing, shall block
18 * 4. Main thread unlock 'rwlock', child thread should get the write lock
19 * 5. Main thread lock 'rwlock' for writing
20 * 6. Create child thread to lock 'rwlock' for writing, should block
21 * 7. Main thread unlock 'rwlock'
31 static pthread_rwlock_t rwlock; global() variable
[all...]
H A D3-1.c7 * Test pthread_rwlock_wrlock(pthread_rwlock_t *rwlock)
10 * [EDEADLK] The current thread already owns the rwlock for writing or reading.
13 * 1. Create and initialize an rwlock
15 * 3. Perform a write lock _again_ with pthread_rwlock_wrlock without first unlocking rwlock()
29 static pthread_rwlock_t rwlock; in main() local
32 if (pthread_rwlock_init(&rwlock, NULL) != 0) { in main()
37 /* Attempt to write lock rwlock, it should return successfully */ in main()
40 if (pthread_rwlock_wrlock(&rwlock) != 0) { in main()
46 /* Now attempt to write lock again without first unlocking rwlock. It may return in main()
50 rc = pthread_rwlock_wrlock(&rwlock); in main()
[all...]
/third_party/ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_rwlock_init/
H A D3-1.c13 * 1. Initialize a pthread_rwlock_t object 'rwlock' with pthread_rwlock_init()
27 static pthread_rwlock_t rwlock; variable
39 if (pthread_rwlock_init(&rwlock, &rwlockattr) != 0) { in main()
45 if (pthread_rwlock_rdlock(&rwlock) != 0) { in main()
52 if (pthread_rwlock_unlock(&rwlock) != 0) { in main()
59 if (pthread_rwlock_wrlock(&rwlock) != 0) { in main()
66 if (pthread_rwlock_unlock(&rwlock) != 0) { in main()
74 if (pthread_rwlock_destroy(&rwlock) != 0) { in main()
/third_party/ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_rwlock_timedrdlock/
H A D5-1.c7 * Test that pthread_rwlock_timedrdlock(pthread_rwlock_t *rwlock)
15 * 2. Child thread lock 'rwlock' for reading with pthread_rwlock_timedrdlock(),
17 * 3. The child thread unlocks the 'rwlock' and exits.
19 * 4. The child thread lock 'rwlock' for reading, with pthread_rwlock_timedrdlock(),
45 pthread_rwlock_t rwlock; in fn_rd_1() local
47 if (pthread_rwlock_init(&rwlock, NULL) != 0) { in fn_rd_1()
59 rc = pthread_rwlock_timedrdlock(&rwlock, &abs_timeout); in fn_rd_1()
67 if (pthread_rwlock_unlock(&rwlock) != 0) { in fn_rd_1()
76 if (pthread_rwlock_destroy(&rwlock) != 0) { in fn_rd_1()
90 pthread_rwlock_t rwlock; in fn_rd_2() local
[all...]
H A D3-1.c7 * Test that pthread_rwlock_timedrdlock(pthread_rwlock_t *rwlock)
10 * rwlock as in the pthread_rwlock_rdlock(). However, if the lock cannot be
15 * 1. Initialize a pthread_rwlock_t object 'rwlock' with pthread_rwlock_init()
16 * 2. Main thread lock 'rwlock' for reading with pthread_rwlock_rdlock()
17 * 3. Create a child thread, the thread lock 'rwlock' for reading,
18 * using pthread_rwlock_timedrdlock(), should get read lock. Thread unlocks 'rwlock'.
19 * 4. Main thread unlock 'rwlock'
20 * 5. Main thread lock 'rwlock' for writing
21 * 6. Create child thread to lock 'rwlock' for reading,
24 * 7. Main thread unlock 'rwlock'
49 static pthread_rwlock_t rwlock; global() variable
[all...]
H A D1-1.c7 * Test that pthread_rwlock_timedrdlock(pthread_rwlock_t *rwlock)
10 * rwlock as in the pthread_rwlock_rdlock(). However, if the lock cannot be
15 * 1. Initialize a pthread_rwlock_t object 'rwlock' with pthread_rwlock_init()
16 * 2. Main thread lock 'rwlock' for reading with pthread_rwlock_rdlock()
17 * 3. Create a child thread, the thread lock 'rwlock' for reading,
18 * using pthread_rwlock_timedrdlock(), should get read lock. Thread unlocks 'rwlock'.
19 * 4. Main thread unlock 'rwlock'
20 * 5. Main thread lock 'rwlock' for writing
21 * 6. Create child thread to lock 'rwlock' for reading,
24 * 7. Main thread unlock 'rwlock'
46 static pthread_rwlock_t rwlock; global() variable
[all...]
/third_party/ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_rwlock_timedwrlock/
H A D5-1.c7 * Test that pthread_rwlock_timedwrlock(pthread_rwlock_t *rwlock)
15 * 2. Child thread lock 'rwlock' for writing with pthread_rwlock_timedwrlock(),
17 * 3. The child thread unlocks the 'rwlock' and exit.
19 * 5. The child thread lock 'rwlock' for write, with pthread_rwlock_timedwrlock(),
52 pthread_rwlock_t rwlock; in fn_wr_1() local
54 if (pthread_rwlock_init(&rwlock, NULL) != 0) { in fn_wr_1()
66 rc = pthread_rwlock_timedwrlock(&rwlock, &abs_timeout); in fn_wr_1()
74 if (pthread_rwlock_unlock(&rwlock) != 0) { in fn_wr_1()
83 if (pthread_rwlock_destroy(&rwlock) != 0) { in fn_wr_1()
97 pthread_rwlock_t rwlock; in fn_wr_2() local
[all...]
/third_party/libuv/src/win/
H A Dthread.c334 int uv_rwlock_init(uv_rwlock_t* rwlock) { in uv_rwlock_init() argument
335 memset(rwlock, 0, sizeof(*rwlock)); in uv_rwlock_init()
336 InitializeSRWLock(&rwlock->read_write_lock_); in uv_rwlock_init()
342 void uv_rwlock_destroy(uv_rwlock_t* rwlock) { in uv_rwlock_destroy() argument
348 void uv_rwlock_rdlock(uv_rwlock_t* rwlock) { in uv_rwlock_rdlock() argument
349 AcquireSRWLockShared(&rwlock->read_write_lock_); in uv_rwlock_rdlock()
353 int uv_rwlock_tryrdlock(uv_rwlock_t* rwlock) { in uv_rwlock_tryrdlock() argument
354 if (!TryAcquireSRWLockShared(&rwlock->read_write_lock_)) in uv_rwlock_tryrdlock()
361 void uv_rwlock_rdunlock(uv_rwlock_t* rwlock) { in uv_rwlock_rdunlock() argument
366 uv_rwlock_wrlock(uv_rwlock_t* rwlock) uv_rwlock_wrlock() argument
371 uv_rwlock_trywrlock(uv_rwlock_t* rwlock) uv_rwlock_trywrlock() argument
379 uv_rwlock_wrunlock(uv_rwlock_t* rwlock) uv_rwlock_wrunlock() argument
[all...]
/third_party/node/deps/uv/src/win/
H A Dthread.c259 int uv_rwlock_init(uv_rwlock_t* rwlock) { in uv_rwlock_init() argument
260 memset(rwlock, 0, sizeof(*rwlock)); in uv_rwlock_init()
261 InitializeSRWLock(&rwlock->read_write_lock_); in uv_rwlock_init()
267 void uv_rwlock_destroy(uv_rwlock_t* rwlock) { in uv_rwlock_destroy() argument
273 void uv_rwlock_rdlock(uv_rwlock_t* rwlock) { in uv_rwlock_rdlock() argument
274 AcquireSRWLockShared(&rwlock->read_write_lock_); in uv_rwlock_rdlock()
278 int uv_rwlock_tryrdlock(uv_rwlock_t* rwlock) { in uv_rwlock_tryrdlock() argument
279 if (!TryAcquireSRWLockShared(&rwlock->read_write_lock_)) in uv_rwlock_tryrdlock()
286 void uv_rwlock_rdunlock(uv_rwlock_t* rwlock) { in uv_rwlock_rdunlock() argument
291 uv_rwlock_wrlock(uv_rwlock_t* rwlock) uv_rwlock_wrlock() argument
296 uv_rwlock_trywrlock(uv_rwlock_t* rwlock) uv_rwlock_trywrlock() argument
304 uv_rwlock_wrunlock(uv_rwlock_t* rwlock) uv_rwlock_wrunlock() argument
[all...]
/third_party/ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_rwlock_trywrlock/
H A D1-1.c7 * Test pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock)
10 * that the function shall fail if any thread currently holds rwlock(for reading and writing).
13 * 1. Initialize a pthread_rwlock_t object 'rwlock' with pthread_rwlock_init()
14 * 2. Main thread lock 'rwlock' for reading with pthread_rwlock_rdlock()
15 * 3. Create a child thread, the thread locks 'rwlock' for writing, using
17 * 4. Main thread unlocks 'rwlock'
18 * 5. Main thread locks 'rwlock' for writing, using pthread_rwlock_trywrlock(),
20 * 6. Create child thread to lock 'rwlock' for writing, with pthread_rwlock_trywrlock(),
22 * 7. Main thread unlock 'rwlock'
31 static pthread_rwlock_t rwlock; variable
[all...]

Completed in 8 milliseconds

123