PaCO++  0.05
paco_marcel.h
Go to the documentation of this file.
1 #include "paco_thread.h"
2 
3 extern "C" {
4 #include <Padico/PM2.h>
5 }
6 
7 class paco_marcel_mutex; // forward declaration
8 
10 {
11  public:
14 
15  void wait();
16  void signal();
17 
18  private:
19  marcel_cond_t condition;
21 };
22 
23 
25 {
26 
27 public:
30 
31  void lock();
32  void unlock();
33 
34 private:
35  marcel_mutex_t mutex;
36 
37  friend void paco_marcel_condition::wait();
38 };
39 
41 
42 public:
43  paco_mutex* paco_create_mutex();
44  paco_condition* paco_create_condition(paco_mutex * mutex);
45  // Create a joinable thread
46  paco_thread * paco_create_thread(void* (*fn)(void*), void* arg = NULL);
47  // Create a detach thread
48  paco_thread * paco_create_thread(void (*fn)(void*), void* arg = NULL);
49 };
50 
52 {
53 public:
55  virtual ~paco_marcel_thread();
56 
57 private:
58  marcel_t thread;
59 
60  friend paco_thread * paco_marcel_fabrique::paco_create_thread(void* (*fn)(void*), void* arg = NULL);
61  friend paco_thread * paco_marcel_fabrique::paco_create_thread(void (*fn)(void*), void* arg = NULL);
62 };
marcel_mutex_t mutex
Definition: paco_marcel.h:35
marcel_cond_t condition
Definition: paco_marcel.h:19
paco_marcel_condition(paco_marcel_mutex *m)
Definition: paco_marcel.cc:34
paco_marcel_mutex * mutex
Definition: paco_marcel.h:20
paco_thread * paco_create_thread(void *(*fn)(void *), void *arg=NULL)
Definition: paco_marcel.cc:68