PaCO++  0.05
paco_pthread.h
Go to the documentation of this file.
00001 #include "paco_thread.h"
00002 #include <pthread.h>
00003 
00004 class paco_pthread_thread : public paco_thread
00005 {
00006  public:
00007   paco_pthread_thread() {}
00008   virtual ~paco_pthread_thread()
00009    {
00010       pthread_detach(thread);
00011    }
00012 
00013   pthread_t thread;
00014 };
00015 
00016 class paco_pthread_mutex : public paco_mutex
00017 {
00018  public:
00019   paco_pthread_mutex();
00020   ~paco_pthread_mutex();
00021 
00022   void lock();
00023   void unlock();
00024 
00025   pthread_mutex_t mutex;
00026 };
00027 
00028 class paco_pthread_condition : public paco_condition
00029 {
00030  public:
00031   paco_pthread_condition(paco_pthread_mutex* m);
00032   ~paco_pthread_condition();
00033 
00034   void wait();
00035   void signal();
00036 
00037  private:
00038   pthread_cond_t condition;
00039   paco_pthread_mutex * mutex;
00040 };
00041 
00042 class paco_pthread_fabrique : virtual public paco_fabrique_thread {
00043 
00044 public:
00045   paco_mutex* paco_create_mutex(); 
00046   paco_condition* paco_create_condition(paco_mutex * mutex);
00047   paco_thread * paco_create_thread(void* (*fn)(void*), void* arg = NULL);
00048 };