diff options
Diffstat (limited to 'cppe/include/IceE/Thread.h')
-rw-r--r-- | cppe/include/IceE/Thread.h | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/cppe/include/IceE/Thread.h b/cppe/include/IceE/Thread.h deleted file mode 100644 index cd6f48f1757..00000000000 --- a/cppe/include/IceE/Thread.h +++ /dev/null @@ -1,152 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved. -// -// This copy of Ice-E is licensed to you under the terms described in the -// ICEE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#ifndef ICEE_THREAD_H -#define ICEE_THREAD_H - -#include <IceE/Shared.h> -#include <IceE/Handle.h> -#include <IceE/Mutex.h> - -namespace IceUtil -{ - -class Time; - -class ICE_API ThreadControl -{ -public: - - // - // Constructs a ThreadControl representing the current thread. - // join and detach cannot be called on such ThreadControl object. - // - ThreadControl(); - -#ifdef _WIN32 - ThreadControl(HANDLE, DWORD); -#else - explicit ThreadControl(pthread_t); -#endif - - // - // Default copy destructor, assignment operator and destructor OK - // - - // - // == and != are meaningful only before the thread is joined/detached, - // or while the thread is still running. - // - bool operator==(const ThreadControl&) const; - bool operator!=(const ThreadControl&) const; - - // - // Wait until the controlled thread terminates. The call has POSIX - // semantics. - // - // At most one thread can wait for the termination of a given - // thread. Calling join on a thread on which another thread is - // already waiting for termination results in undefined behaviour, - // as does joining with a thread after having joined with it - // previously, or joining with a detached thread. - // - void join(); - - // - // Detach a thread. Once a thread is detached, it cannot be - // detached again, nor can it be joined with. Every thread that - // was created using the IceUtil::Thread class must either be - // joined with or detached exactly once. Detaching a thread a - // second time, or detaching a thread that was previously joined - // with results in undefined behavior. - // - void detach(); - - // - // id() returns the Thread ID on Windows and the underlying pthread_t - // on POSIX platforms. - // -#ifdef _WIN32 - typedef DWORD ID; -#else - typedef pthread_t ID; -#endif - ID id() const; - - static void sleep(const Time&); - static void yield(); - -private: - -#ifdef _WIN32 - HANDLE _handle; - DWORD _id; -#else - pthread_t _thread; - - // - // Used to prevent joining/detaching a ThreadControl constructed - // with the default constructor. Only needed to enforce our - // portable join/detach behavior. - // - bool _detachable; -#endif -}; - -class ICE_API Thread : virtual public IceUtil::Shared -{ -public: - - Thread(); - virtual ~Thread(); - - virtual void run() = 0; - - ThreadControl start(size_t = 0); - - ThreadControl getThreadControl() const; - - bool operator==(const Thread&) const; - bool operator!=(const Thread&) const; - bool operator<(const Thread&) const; - - // - // Check whether a thread is still alive. - // - bool isAlive() const; - - // - // This function is an implementation detail; - // do not call it. - // - void _done(); - -protected: - Mutex _stateMutex; - bool _started; - bool _running; - -#ifdef _WIN32 - HANDLE _handle; - DWORD _id; -#else - pthread_t _thread; -#endif - -private: - Thread(const Thread&); // Copying is forbidden - void operator=(const Thread&); // Assignment is forbidden -}; - -typedef Handle<Thread> ThreadPtr; - -} - -#endif - |