source: tests/concurrent/pthread/pthread_cond_test.cfa@ d99a716

ADT ast-experimental
Last change on this file since d99a716 was 428adbc, checked in by z277zhu <z277zhu@…>, 3 years ago

fix pthread_sig* interpose problems; add test doc

Signed-off-by: z277zhu <z277zhu@…>

  • Property mode set to 100644
File size: 1.0 KB
Line 
1/* small test of pthread cond */
2
3#include <fstream.hfa>
4#include <thread.hfa>
5#include <pthread.h>
6
7int done_flag = 0;
8pthread_mutex_t _mutex;
9pthread_cond_t cond;
10
11extern "C"{
12 void* S1(void* arg){
13 pthread_mutex_lock(&_mutex);
14 for (int i = 0; i < 1000; i++) sout | "S1 done " | i;
15 done_flag = 1;
16 pthread_mutex_unlock(&_mutex);
17 pthread_cond_signal(&cond);
18 return NULL;
19 }
20
21 void* S2(void* arg){
22 pthread_mutex_lock(&_mutex);
23 if (!done_flag) pthread_cond_wait(&cond, &_mutex);
24 sout | "S2 statement done!";
25 pthread_mutex_unlock(&_mutex);
26 return NULL;
27 }
28}
29
30
31
32int main(int argc, char const *argv[])
33{
34 /* code */
35 pthread_mutex_init(&_mutex, NULL);
36 pthread_cond_init(&cond, NULL);
37 pthread_t s1,s2;
38 pthread_create(&s1, NULL, S1, NULL);
39 pthread_create(&s2, NULL, S2, NULL);
40 void* res = NULL;
41 pthread_join(s1, &res);
42 pthread_join(s2, &res);
43 pthread_mutex_destroy(&_mutex);
44 pthread_cond_destroy(&cond);
45 return 0;
46}
Note: See TracBrowser for help on using the repository browser.