PaCO++
0.05
|
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 };