diff options
author | Tim Besard <tim.besard@gmail.com> | 2011-11-07 09:37:55 +0100 |
---|---|---|
committer | Tim Besard <tim.besard@gmail.com> | 2011-11-07 09:37:55 +0100 |
commit | 95e36280e5f825269babd2c322586b9f632f6148 (patch) | |
tree | 216e48b5420c63e5c1e73007ab7dd101d3b862df /src/thread.h | |
parent | 79e05bc1408247729b5e232c662dfd62cd1080c3 (diff) |
Lowercase is nicer.
Diffstat (limited to 'src/thread.h')
-rw-r--r-- | src/thread.h | 68 |
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 |