summaryrefslogtreecommitdiff
path: root/src/thread.h
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/thread.h
parent79e05bc1408247729b5e232c662dfd62cd1080c3 (diff)
Lowercase is nicer.
Diffstat (limited to 'src/thread.h')
-rw-r--r--src/thread.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/thread.h b/src/thread.h
new file mode 100644
index 0000000..146bf92
--- /dev/null
+++ b/src/thread.h
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * 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 *
+ *******************************************************************************/
+
+//
+// Configuration
+//
+
+// Include guard
+#if !defined(THREAD_H)
+#define THREAD_H
+
+// System includes
+#include <pthread.h>
+
+// Local includes
+#include "lock.h"
+
+
+//
+// Class definition
+//
+
+class Thread {
+public:
+ Thread();
+ ~Thread();
+
+ virtual int run() = 0;
+
+ int start();
+ int wait();
+ int thread_count() {
+ return Thread::count;
+ }
+ int thread_id() {
+ return id;
+ }
+
+ static void exit();
+
+protected:
+ void lock();
+ void unlock();
+ static void global_lock();
+ static void global_unlock();
+
+private:
+ static void* start_routine(void *);
+ static Lock _global_lock;
+
+ Lock object_lock;
+
+ pthread_t thread;
+
+ static int count;
+ int id;
+ int lock_obj;
+};
+
+#endif