]> AND Private Git Repository - loba.git/blob - synchro.h
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Tracing API has changed. Disable it until its usage is fixed.
[loba.git] / synchro.h
1 #ifndef SYNCHRO_H
2 #define SYNCHRO_H
3
4 #include <xbt/synchro.h>
5
6 class mutex_t {
7 public:
8     mutex_t()                   { mutex = xbt_mutex_init(); }
9     ~mutex_t()                  { xbt_mutex_destroy(mutex); }
10     void acquire()              { xbt_mutex_acquire(mutex); }
11     void release()              { xbt_mutex_release(mutex); }
12
13 private:
14     xbt_mutex_t mutex;
15
16     friend class condition_t;
17 };
18
19 class condition_t {
20 public:
21     condition_t()               { cond = xbt_cond_init();           }
22     ~condition_t()              { xbt_cond_destroy(cond);           }
23     void broadcast()            { xbt_cond_broadcast(cond);         }
24     void signal()               { xbt_cond_signal(cond);            }
25     void wait(mutex_t& mutex)   { xbt_cond_wait(cond, mutex.mutex); }
26     void timedwait(mutex_t& mutex, double delay) {
27         xbt_cond_timedwait(cond, mutex.mutex, delay);
28     }
29
30 private:
31     xbt_cond_t cond;
32 };
33
34 #endif // !SYNCHRO_H
35
36 // Local variables:
37 // mode: c++
38 // End: