Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Feb 7, 2007, 9:21:02 PM (17 years ago)
Author:
bensch
Message:

added new thread classes

Location:
branches/cleanup/src/lib/util/threads
Files:
1 added
1 copied

Legend:

Unmodified
Added
Removed
  • branches/cleanup/src/lib/util/threads/threading.h

    r10569 r10574  
    99#define _THREADING_H
    1010
    11 #ifdef HAVE_SDL_H
    12  #include <SDL_thread.h>
    13 #else
    14  #include <SDL/SDL_thread.h>
    15 #endif
    16 
    17 namespace OrxThread
    18 {
    19   //! A class for Wrapping Threads
    20   class Thread
    21   {
    22   public:
    23     Thread(int (*fn)(void *), void *data) { this->thread = SDL_CreateThread(fn, data); };
    24     virtual ~Thread() { SDL_KillThread(this->thread); }
    25     void exit ( int returnCode = 0 );
    26     bool isFinished () const;
    27     bool isRunning () const;
    28     void wait() { SDL_WaitThread(this->thread, NULL); };
    29 
    30     void start();
    31     void terminate();
     11#include "thread.h"
     12#include "mutex.h"
     13#include "mutex_locker.h"
    3214
    3315
    34   private:
    35     SDL_Thread* thread;
    36 
    37   };
    38 
    39   class Mutex
    40   {
    41   public:
    42     Mutex() {  this->mutex = SDL_CreateMutex(); };
    43     ~Mutex() { SDL_DestroyMutex(this->mutex); }
    44 
    45     void lock() { SDL_mutexP(mutex); };
    46     void unlock() { SDL_mutexV(mutex); };
    47 
    48     SDL_mutex* getMutex() const { return this->mutex; };
    49   private:
    50     SDL_mutex* mutex;
    51   };
    52 
    53   //! A Class that locks a Mutex within its scope
    54   class MutexLock
    55   {
    56   public:
    57     //! Locks the Mutex mutex in this Scope.
    58     MutexLock(Mutex* mutex) { SDL_mutexP(mutex->getMutex()); this->mutex = mutex; };
    59     ~MutexLock() { SDL_mutexV(mutex->getMutex()); };
    60   private:
    61     Mutex* mutex;         //!< The Mutex to lock.
    62   };
    63 }
    6416
    6517#endif /* _THREADING_H */
Note: See TracChangeset for help on using the changeset viewer.