source: tests/concurrency/pthread/pthread_cond_test.cfa @ 523e300

Last change on this file since 523e300 was c26bea2a, checked in by Peter A. Buhr <pabuhr@…>, 17 months ago

first attempt at renaming directory tests/concurrent to tests/concurrency to harmonize with other concurrency directory names

  • Property mode set to 100644
File size: 1.0 KB
RevLine 
[428adbc]1/* small test of pthread cond */
[20be782]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.