#line 8 "/home/ubuntu/felix/src/packages/rtl-boundqueue.fdoc"
#ifndef __FLX_PTHREAD_BOUND_QUEUE_H__
#define __FLX_PTHREAD_BOUND_QUEUE_H__
#include "flx_pthread_config.hpp"
#include "flx_gc.hpp"
#include <thread>
#include <mutex>
#include <condition_variable>
namespace flx { namespace pthread {
class PTHREAD_EXTERN bound_queue_t :public world_stop_notifier_t {
thread_control_base_t *tc;
::std::condition_variable_any size_changed;
::std::mutex member_lock;
size_t bound;
void notify_world_stop() override;
void wait();
void wait_no_world_stop_check(); public:
void *lame_opaque; bound_queue_t(thread_control_base_t *tc_, size_t);
~bound_queue_t();
void enqueue(void*);
void enqueue_no_world_stop_check(void*); void* dequeue();
void* maybe_dequeue();
void resize(size_t);
void wait_until_empty();
size_t len();
};
PTHREAD_EXTERN ::flx::gc::generic::scanner_t bound_queue_scanner;
}} #endif