STXXL
1.4.1
|
Implementation of a local request queue having only one queue for both read and write requests, thus having only one thread.
Definition at line 30 of file request_queue_impl_1q.h.
Public Member Functions | |
request_queue_impl_1q (int n=1) | |
~request_queue_impl_1q () | |
void | add_request (request_ptr &req) |
bool | cancel_request (request_ptr &req) |
void | set_priority_op (priority_op op) |
Public Member Functions inherited from stxxl::request_queue | |
virtual | ~request_queue () |
Private Types | |
typedef std::list< request_ptr > | queue_type |
typedef request_queue_impl_1q | self |
Static Private Member Functions | |
static void * | worker (void *arg) |
Private Attributes | |
queue_type | m_queue |
mutex | m_queue_mutex |
semaphore | m_sem |
thread_type | m_thread |
state< thread_state > | m_thread_state |
Static Private Attributes | |
static const priority_op | m_priority_op = WRITE |
Additional Inherited Members | |
Public Types inherited from stxxl::request_queue | |
enum | priority_op { READ, WRITE, NONE } |
Protected Types inherited from stxxl::request_queue_impl_worker | |
enum | thread_state { NOT_RUNNING, RUNNING, TERMINATING, TERMINATED } |
typedef pthread_t | thread_type |
Protected Member Functions inherited from stxxl::request_queue_impl_worker | |
void | start_thread (void *(*worker)(void *), void *arg, thread_type &t, state< thread_state > &s) |
void | stop_thread (thread_type &t, state< thread_state > &s, semaphore &sem) |
|
private |
Definition at line 34 of file request_queue_impl_1q.h.
|
private |
Definition at line 33 of file request_queue_impl_1q.h.
stxxl::request_queue_impl_1q::request_queue_impl_1q | ( | int | n = 1 | ) |
Definition at line 46 of file request_queue_impl_1q.cpp.
References m_thread, m_thread_state, stxxl::request_queue_impl_worker::start_thread(), stxxl::STXXL_UNUSED(), and worker().
stxxl::request_queue_impl_1q::~request_queue_impl_1q | ( | ) |
Definition at line 106 of file request_queue_impl_1q.cpp.
References m_sem, m_thread, m_thread_state, and stxxl::request_queue_impl_worker::stop_thread().
|
virtual |
Implements stxxl::request_queue.
Definition at line 53 of file request_queue_impl_1q.cpp.
References _STXXL_FORCE_SEQUENTIAL, stxxl::counting_ptr< Type >::empty(), stxxl::counting_ptr< Type >::get(), m_queue, m_queue_mutex, m_sem, m_thread_state, stxxl::request_queue_impl_worker::RUNNING, STXXL_ERRMSG, and STXXL_THROW_INVALID_ARGUMENT.
|
virtual |
Implements stxxl::request_queue.
Definition at line 79 of file request_queue_impl_1q.cpp.
References _STXXL_FORCE_SEQUENTIAL, stxxl::counting_ptr< Type >::empty(), stxxl::find(), stxxl::counting_ptr< Type >::get(), m_queue, m_queue_mutex, m_sem, m_thread_state, stxxl::request_queue_impl_worker::RUNNING, STXXL_ERRMSG, and STXXL_THROW_INVALID_ARGUMENT.
|
inlinevirtual |
Reimplemented from stxxl::request_queue.
Definition at line 55 of file request_queue_impl_1q.h.
References stxxl::STXXL_UNUSED().
|
staticprivate |
Definition at line 111 of file request_queue_impl_1q.cpp.
References stxxl::counting_ptr< Type >::get(), m_sem, stxxl::request_queue_impl_worker::TERMINATED, stxxl::request_queue_impl_worker::TERMINATING, and stxxl::scoped_mutex_lock::unlock().
Referenced by request_queue_impl_1q().
|
staticprivate |
Definition at line 43 of file request_queue_impl_1q.h.
|
private |
Definition at line 37 of file request_queue_impl_1q.h.
Referenced by add_request(), and cancel_request().
|
private |
Definition at line 36 of file request_queue_impl_1q.h.
Referenced by add_request(), and cancel_request().
|
private |
Definition at line 41 of file request_queue_impl_1q.h.
Referenced by add_request(), cancel_request(), worker(), and ~request_queue_impl_1q().
|
private |
Definition at line 40 of file request_queue_impl_1q.h.
Referenced by request_queue_impl_1q(), and ~request_queue_impl_1q().
|
private |
Definition at line 39 of file request_queue_impl_1q.h.
Referenced by add_request(), cancel_request(), request_queue_impl_1q(), and ~request_queue_impl_1q().