runs
[urcu.git] / test_urcu.c
1 #include <stdio.h>
2 #include <pthread.h>
3 #include <stdlib.h>
4 #include <sys/types.h>
5 #include <sys/wait.h>
6 #include <unistd.h>
7 #include <stdio.h>
8 #include "urcu.h"
9
10 #define NR_READ 10
11 #define NR_WRITE 4
12
13
14 void *thr_reader(void *arg)
15 {
16 printf("thread %s, thread id : %lu, pid %lu\n",
17 "reader", pthread_self(), getpid());
18 sleep(2);
19
20 urcu_register_thread();
21
22
23
24 urcu_unregister_thread();
25 return ((void*)1);
26
27 }
28
29 void *thr_writer(void *arg)
30 {
31 int i;
32
33 printf("thread %s, thread id : %lu, pid %lu\n",
34 "writer", pthread_self(), getpid());
35 sleep(2);
36
37 for (i = 0; i < 1000; i++) {
38 }
39
40 return ((void*)2);
41 }
42
43 int main()
44 {
45 int err;
46 pthread_t tid_reader[NR_READ], tid_writer[NR_WRITE];
47 void *tret;
48 int i;
49
50 for (i = 0; i < NR_READ; i++) {
51 err = pthread_create(&tid_reader[i], NULL, thr_reader, NULL);
52 if (err != 0)
53 exit(1);
54 }
55 for (i = 0; i < NR_WRITE; i++) {
56 err = pthread_create(&tid_writer[i], NULL, thr_writer, NULL);
57 if (err != 0)
58 exit(1);
59 }
60
61 sleep(10);
62
63 for (i = 0; i < NR_WRITE; i++) {
64 err = pthread_join(tid_reader[i], &tret);
65 if (err != 0)
66 exit(1);
67 }
68 for (i = 0; i < NR_WRITE; i++) {
69 err = pthread_join(tid_writer[i], &tret);
70 if (err != 0)
71 exit(1);
72 }
73
74 return 0;
75 }
This page took 0.046551 seconds and 5 git commands to generate.