dol: initial dol commit
[jump.git] / dol / src / dol / visitor / PipeAndFilter / lib / Condition.cpp
diff --git a/dol/src/dol/visitor/PipeAndFilter/lib/Condition.cpp b/dol/src/dol/visitor/PipeAndFilter/lib/Condition.cpp
new file mode 100644 (file)
index 0000000..4525b37
--- /dev/null
@@ -0,0 +1,31 @@
+#include "Condition.h"\r
+\r
+Condition::Condition(Mutex *mutex) {\r
+    //std::cout << "Create Condition." << std::endl;\r
+    _mutex = mutex;\r
+    _condition = new pthread_cond_t;\r
+    pthread_cond_init(_condition, NULL);\r
+}\r
+\r
+\r
+Condition::~Condition() {\r
+    //std::cout << "Delete Condition." << std::endl;\r
+    pthread_cond_destroy(_condition);\r
+    delete _condition;\r
+    //std::cout << "Deleted Condition." << std::endl;\r
+}\r
+\r
+\r
+void Condition::notify() {\r
+    pthread_cond_signal(_condition);\r
+}\r
+\r
+\r
+void Condition::notifyAll() {\r
+    pthread_cond_broadcast(_condition);\r
+}\r
+\r
+\r
+void Condition::wait() {\r
+    pthread_cond_wait(_condition, _mutex->getPThreadMutex());\r
+}\r