libuv/docs/code/locks/main.c
Go to the documentation of this file.
1 #include <stdio.h>
2 #include <uv.h>
3 
7 
8 void reader(void *n)
9 {
10  int num = *(int *)n;
11  int i;
12  for (i = 0; i < 20; i++) {
14  printf("Reader %d: acquired lock\n", num);
15  printf("Reader %d: shared num = %d\n", num, shared_num);
17  printf("Reader %d: released lock\n", num);
18  }
20 }
21 
22 void writer(void *n)
23 {
24  int num = *(int *)n;
25  int i;
26  for (i = 0; i < 20; i++) {
28  printf("Writer %d: acquired lock\n", num);
29  shared_num++;
30  printf("Writer %d: incremented shared num = %d\n", num, shared_num);
32  printf("Writer %d: released lock\n", num);
33  }
35 }
36 
37 int main()
38 {
40 
41  shared_num = 0;
43 
45 
46  int thread_nums[] = {1, 2, 1};
47  uv_thread_create(&threads[0], reader, &thread_nums[0]);
48  uv_thread_create(&threads[1], reader, &thread_nums[1]);
49 
50  uv_thread_create(&threads[2], writer, &thread_nums[2]);
51 
54 
56  return 0;
57 }
shared_num
int shared_num
Definition: libuv/docs/code/locks/main.c:6
blocker
uv_barrier_t blocker
Definition: libuv/docs/code/locks/main.c:4
uv_barrier_destroy
UV_EXTERN void uv_barrier_destroy(uv_barrier_t *barrier)
Definition: libuv/src/unix/thread.c:118
printf
_Use_decl_annotations_ int __cdecl printf(const char *_Format,...)
Definition: cs_driver.c:91
threads
static uv_thread_t * threads
Definition: threadpool.c:38
uv_rwlock_destroy
UV_EXTERN void uv_rwlock_destroy(uv_rwlock_t *rwlock)
Definition: libuv/src/unix/thread.c:360
numlock
uv_rwlock_t numlock
Definition: libuv/docs/code/locks/main.c:5
uv_barrier_init
UV_EXTERN int uv_barrier_init(uv_barrier_t *barrier, unsigned int count)
Definition: libuv/src/unix/thread.c:55
main
int main()
Definition: libuv/docs/code/locks/main.c:37
uv_rwlock_wrlock
UV_EXTERN void uv_rwlock_wrlock(uv_rwlock_t *rwlock)
Definition: libuv/src/unix/thread.c:392
uv_rwlock_wrunlock
UV_EXTERN void uv_rwlock_wrunlock(uv_rwlock_t *rwlock)
Definition: libuv/src/unix/thread.c:412
uv_thread_create
UV_EXTERN int uv_thread_create(uv_thread_t *tid, uv_thread_cb entry, void *arg)
Definition: libuv/src/unix/thread.c:209
n
int n
Definition: abseil-cpp/absl/container/btree_test.cc:1080
writer
void writer(void *n)
Definition: libuv/docs/code/locks/main.c:22
uv.h
uv_barrier_t
Definition: unix.h:154
uv_rwlock_init
UV_EXTERN int uv_rwlock_init(uv_rwlock_t *rwlock)
Definition: libuv/src/unix/thread.c:355
uv_rwlock_t
Definition: win.h:259
xds_manager.num
num
Definition: xds_manager.py:56
uv_rwlock_rdunlock
UV_EXTERN void uv_rwlock_rdunlock(uv_rwlock_t *rwlock)
Definition: libuv/src/unix/thread.c:386
uv_thread_t
pthread_t uv_thread_t
Definition: unix.h:134
uv_barrier_wait
UV_EXTERN int uv_barrier_wait(uv_barrier_t *barrier)
Definition: libuv/src/unix/thread.c:89
reader
void reader(void *n)
Definition: libuv/docs/code/locks/main.c:8
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
uv_rwlock_rdlock
UV_EXTERN void uv_rwlock_rdlock(uv_rwlock_t *rwlock)
Definition: libuv/src/unix/thread.c:366


grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:17