Fix race conditions and deadlocks in Channels (hopefully) (issue #554)

Also, this is a giant commit because of the official Code Style (tm) was applied.

--HG--
branch : minor
This commit is contained in:
Bart van Strien
2013-01-30 17:15:12 +01:00
parent be2363fc00
commit c7c5d0ed6b
15 changed files with 414 additions and 367 deletions
+24 -24
View File
@@ -32,37 +32,37 @@ namespace thread
{
namespace sdl
{
class Conditional;
class Conditional;
class Mutex : public thread::Mutex
{
public:
Mutex();
~Mutex();
class Mutex : public thread::Mutex
{
public:
Mutex();
~Mutex();
void lock();
void unlock();
void lock();
void unlock();
private:
SDL_mutex* mutex;
Mutex(const Mutex&/* mutex*/) {}
private:
SDL_mutex *mutex;
Mutex(const Mutex&/* mutex*/) {}
friend class Conditional;
};
friend class Conditional;
};
class Conditional : public thread::Conditional
{
public:
Conditional();
~Conditional();
class Conditional : public thread::Conditional
{
public:
Conditional();
~Conditional();
void signal();
void broadcast();
bool wait(thread::Mutex* mutex, int timeout=-1);
void signal();
void broadcast();
bool wait(thread::Mutex *mutex, int timeout=-1);
private:
SDL_cond* cond;
};
private:
SDL_cond *cond;
};
} // sdl
} // thread