PaCO++  0.05
paco_marcel.cc
Go to the documentation of this file.
1 #include "paco_marcel.h"
2 
4 {
5 }
6 
8 {
9 }
10 
12 {
13  marcel_mutex_init(&mutex, 0);
14 }
15 
17 {
18  marcel_mutex_destroy(&mutex);
19 }
20 
21 void
23 {
24  marcel_mutex_lock(&mutex);
25 }
26 
27 void
29 {
30  marcel_mutex_unlock(&mutex);
31 }
32 
33 
35 {
36  mutex = m;
37  marcel_cond_init(&condition, 0);
38 }
39 
40 
42 {
43  marcel_cond_destroy(&condition);
44 }
45 
46 void
48 {
49  marcel_cond_wait(&condition, &mutex->mutex);
50 }
51 
52 void
54 {
55  marcel_cond_signal(&condition);
56 }
57 
59 {
60  return new paco_marcel_mutex();
61 }
62 
64 {
65  return new paco_marcel_condition((paco_marcel_mutex*) mutex);
66 }
67 
68 paco_thread * paco_marcel_fabrique::paco_create_thread(void* (*fn)(void*), void* arg)
69 {
70  marcel_attr_t attr;
71 
72  marcel_attr_init(&attr);
73  // marcel_attr_setdetachstate(&attr, MARCEL_CREATE_DETACHED );
74 
76  marcel_create(&th->thread, &attr, fn,arg);
77  padico_tm_thread_givename_tid("PaCO++ thread (joinable)", th->thread);
78  return th;
79 }
80 
82 {
83  marcel_attr_t attr;
84 
85 
86  marcel_attr_init(&attr);
87  marcel_attr_setdetachstate(&attr, MARCEL_CREATE_DETACHED );
88 
90  marcel_create(&th->thread, &attr, (void* (*)(void*))fn,arg);
91  padico_tm_thread_givename_tid("PaCO++ thread (detached)", th->thread);
92  return th;
93 }
94 
paco_mutex * paco_create_mutex()
Definition: paco_marcel.cc:58
paco_condition * paco_create_condition(paco_mutex *mutex)
Definition: paco_marcel.cc:63
virtual ~paco_marcel_thread()
Definition: paco_marcel.cc:7
paco_marcel_condition(paco_marcel_mutex *m)
Definition: paco_marcel.cc:34
paco_thread * paco_create_thread(void *(*fn)(void *), void *arg=NULL)
Definition: paco_marcel.cc:68