]> SALOME platform Git repositories - modules/yacs.git/blob - src/bases/MutexPT.cxx
Salome HOME
copy tag mergefrom_BR_V0_1_CC_Salome_04oct07
[modules/yacs.git] / src / bases / MutexPT.cxx
1 #include "MutexPT.hxx"
2
3 using namespace YACS::BASES;
4
5 MutexPT::MutexPT()
6 {
7   //pthread_mutexattr_settype(&_options, PTHREAD_MUTEX_FAST_NP);
8   //pthread_mutex_init(&_mutexDesc, &_options);
9   pthread_mutex_init(&_mutexDesc, NULL); // potential hang up at start with commented init
10 }
11
12 MutexPT::~MutexPT()
13 {
14   pthread_mutex_destroy(&_mutexDesc);
15 }
16
17 void MutexPT::lock()
18 {
19   pthread_mutex_lock(&_mutexDesc);
20 }
21
22 void MutexPT::unlock()
23 {
24   pthread_mutex_unlock(&_mutexDesc);
25 }
26
27 ConditionPT::ConditionPT()
28 {
29   pthread_cond_init(&_cond,  NULL);
30 }
31
32 ConditionPT::~ConditionPT()
33 {
34   pthread_cond_destroy(&_cond);
35 }
36
37 void ConditionPT::notify_one()
38 {
39   pthread_cond_signal(&_cond);
40 }
41
42 void ConditionPT::notify_all()
43 {
44   pthread_cond_broadcast(&_cond);
45 }
46
47 void ConditionPT::wait(MutexPT& mutex)
48 {
49   pthread_cond_wait(&_cond, &mutex._mutexDesc);
50 }
51