00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef STXXL_IO_REQUEST_QUEUE_IMPL_1Q_HEADER
00016 #define STXXL_IO_REQUEST_QUEUE_IMPL_1Q_HEADER
00017
00018 #include <list>
00019
00020 #include <stxxl/bits/io/request_queue_impl_worker.h>
00021 #include <stxxl/bits/common/mutex.h>
00022
00023
00024 __STXXL_BEGIN_NAMESPACE
00025
00028
00029 class request_queue_impl_1q : public request_queue_impl_worker
00030 {
00031 private:
00032 typedef request_queue_impl_1q self;
00033 typedef std::list<request_ptr> queue_type;
00034
00035 mutex queue_mutex;
00036 queue_type queue;
00037
00038 state<thread_state> _thread_state;
00039 thread_type thread;
00040 semaphore sem;
00041
00042 static const priority_op _priority_op = WRITE;
00043
00044 static void * worker(void * arg);
00045
00046 public:
00047
00048 request_queue_impl_1q(int n = 1);
00049
00050
00051
00052
00053
00054 void set_priority_op(priority_op op)
00055 {
00056
00057 STXXL_UNUSED(op);
00058 }
00059 void add_request(request_ptr & req);
00060 bool cancel_request(request_ptr & req);
00061 ~request_queue_impl_1q();
00062 };
00063
00065
00066 __STXXL_END_NAMESPACE
00067
00068 #endif // !STXXL_IO_REQUEST_QUEUE_IMPL_1Q_HEADER
00069