summaryrefslogtreecommitdiff
path: root/src/spinbarrier.cpp
diff options
context:
space:
mode:
authorTim Besard <tim.besard@gmail.com>2011-11-07 09:37:55 +0100
committerTim Besard <tim.besard@gmail.com>2011-11-07 09:37:55 +0100
commit95e36280e5f825269babd2c322586b9f632f6148 (patch)
tree216e48b5420c63e5c1e73007ab7dd101d3b862df /src/spinbarrier.cpp
parent79e05bc1408247729b5e232c662dfd62cd1080c3 (diff)
Lowercase is nicer.
Diffstat (limited to 'src/spinbarrier.cpp')
-rw-r--r--src/spinbarrier.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/spinbarrier.cpp b/src/spinbarrier.cpp
new file mode 100644
index 0000000..e7d3b70
--- /dev/null
+++ b/src/spinbarrier.cpp
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2006 International Business Machines Corporation. *
+ * All rights reserved. This program and the accompanying materials *
+ * are made available under the terms of the Common Public License v1.0 *
+ * which accompanies this distribution, and is available at *
+ * http://www.opensource.org/licenses/cpl1.0.php *
+ * *
+ * Contributors: *
+ * Douglas M. Pase - initial API and implementation *
+ *******************************************************************************/
+
+/******************************************************************************
+ * *
+ * SpinBarrier *
+ * *
+ * Author: Douglas M. Pase *
+ * *
+ * Date: September 21, 2000 *
+ * Translated to C++, June 19, 2005 *
+ * *
+ * void barrier() *
+ * *
+ ******************************************************************************/
+
+//
+// Configuration
+//
+
+// Implementation header
+#include "spinbarrier.h"
+
+// System includes
+#include <cstdio>
+
+
+//
+// Implementation
+//
+
+// create a new barrier
+SpinBarrier::SpinBarrier(int participants) :
+ limit(participants) {
+ pthread_barrier_init(&barrier_obj, NULL, this->limit);
+}
+
+// destroy an old barrier
+SpinBarrier::~SpinBarrier() {
+}
+
+// enter the barrier and wait. everyone leaves
+// when the last participant enters the barrier.
+void SpinBarrier::barrier() {
+ pthread_barrier_wait(&this->barrier_obj);
+}