// ============================================================== // This file is part of Glest Shared Library (www.glest.org) // // Copyright (C) 2005 Matthias Braun // // You can redistribute this code and/or modify it under // the terms of the GNU General Public License as published // by the Free Software Foundation; either version 2 of the // License, or (at your option) any later version // ============================================================== #ifndef _SHARED_PLATFORM_THREAD_H_ #define _SHARED_PLATFORM_THREAD_H_ #include #include // ===================================================== // class Thread // ===================================================== namespace Shared{ namespace Platform{ class Thread{ public: enum Priority { pIdle = 0, pLow = 1, pNormal = 2, pHigh = 3, pRealTime = 4 }; private: SDL_Thread* thread; public: virtual ~Thread() {} void start(); virtual void execute()=0; void setPriority(Thread::Priority threadPriority); void suspend(); void resume(); private: static int beginExecution(void *param); }; // ===================================================== // class Mutex // ===================================================== class Mutex{ private: SDL_mutex* mutex; public: Mutex(); ~Mutex(); void p(); void v(); }; // ===================================================== // class Semaphore // ===================================================== class Semaphore { private: SDL_sem* semaphore; public: Semaphore(Uint32 initialValue = 0); ~Semaphore(); void signal(); int waitTillSignalled(); }; }}//end namespace #endif