15 #ifndef STXXL_IO_REQUEST_QUEUE_IMPL_WORKER_HEADER
16 #define STXXL_IO_REQUEST_QUEUE_IMPL_WORKER_HEADER
18 #ifdef STXXL_BOOST_CONFIG
19 #include <boost/config.hpp>
22 #ifdef STXXL_BOOST_THREADS // Use Portable Boost threads
23 #include <boost/thread/thread.hpp>
28 #include <stxxl/bits/io/request_queue.h>
29 #include <stxxl/bits/common/semaphore.h>
30 #include <stxxl/bits/common/state.h>
33 __STXXL_BEGIN_NAMESPACE
38 class request_queue_impl_worker :
public request_queue
41 enum thread_state { NOT_RUNNING, RUNNING, TERMINATING, TERMINATE = TERMINATING };
43 #ifdef STXXL_BOOST_THREADS
44 typedef boost::thread * thread_type;
46 typedef pthread_t thread_type;
50 void start_thread(
void * (*worker)(
void *),
void * arg, thread_type & t, state<thread_state> & s);
51 void stop_thread(thread_type & t, state<thread_state> & s, semaphore & sem);
58 #endif // !STXXL_IO_REQUEST_QUEUE_IMPL_WORKER_HEADER