pthread_sleep_queue.hpp
00001 #line 1241 "./lpsrc/flx_pthread.pak"
00002 #ifndef __FLX_PTHREAD_SLEEP_QUEUE_H__
00003 #define __FLX_PTHREAD_SLEEP_QUEUE_H__
00004 #include <flx_pthread_config.hpp>
00005 #include "pthread_mutex.hpp"
00006 #include "pthread_condv.hpp"
00007
00008
00009
00010
00011 namespace flx { namespace pthread {
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 class PTHREAD_EXTERN sleep_queue_t {
00028 flx_condv_t size_changed;
00029 void *lame_opaque;
00030 size_t bound;
00031 public:
00032 flx_mutex_t member_lock;
00033 sleep_queue_t(size_t);
00034 ~sleep_queue_t();
00035 void enqueue(void*);
00036 void* dequeue();
00037 void resize(size_t);
00038 void wait_until_empty();
00039 };
00040
00041 }}
00042 #endif
00043