]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
*** empty log message ***
authorsbrandt <sbrandt@29311d96-e01e-0410-9327-a35deaab8ce9>
Wed, 22 Jun 2005 04:44:26 +0000 (04:44 +0000)
committersbrandt <sbrandt@29311d96-e01e-0410-9327-a35deaab8ce9>
Wed, 22 Jun 2005 04:44:26 +0000 (04:44 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@332 29311d96-e01e-0410-9327-a35deaab8ce9

ceph/common/Semaphore.h [new file with mode: 0644]

diff --git a/ceph/common/Semaphore.h b/ceph/common/Semaphore.h
new file mode 100644 (file)
index 0000000..f8821f7
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef _Sem_Posix_
+#define _Sem_Posix_
+
+#include <cassert>
+
+class Semaphore
+{
+  Mutex m;
+  Cond c;
+  int count;
+
+  public:
+
+  Semaphore()
+  {
+    count = 0;
+  }
+
+  void Put()  { 
+    m.Lock();
+    count++;
+    c.Signal();
+    m.Unlock();
+  }
+
+  void Get() 
+  { 
+    m.Lock();
+    while(count <= 0) {
+      C.Wait(m);
+    }
+    count--;
+    m.Unlock();
+  }
+};
+
+#endif // !_Mutex_Posix_