Common state in parallel pipelining library.
More...
#include <tpie/pipelining/parallel/base.h>
Inherited by tpie::pipelining::parallel_bits::state< T1, T2 >.
|
typedef std::mutex | mutex_t |
|
typedef std::condition_variable | cond_t |
|
typedef std::unique_lock
< std::mutex > | lock_t |
|
|
std::vector< node * > | m_inputs |
|
std::vector< after_base * > | m_outputs |
|
std::vector< worker_state > | m_states |
|
Common state in parallel pipelining library.
This class is instantiated once and kept in a std::shared_ptr, and it is not copy constructible.
Unless noted otherwise, a thread must own the state mutex to access other parts of this instance.
Definition at line 211 of file base.h.
worker_state tpie::pipelining::parallel_bits::state_base::get_state |
( |
size_t |
idx | ) |
|
|
inline |
Shared state, must have mutex to use.
Definition at line 276 of file base.h.
277 return m_states[idx];
node& tpie::pipelining::parallel_bits::state_base::input |
( |
size_t |
idx | ) |
|
|
inline |
Get the specified before instance.
Enables easy construction of the pipeline graph at runtime.
Shared state, must have mutex to use.
Definition at line 261 of file base.h.
261 {
return *m_inputs[idx]; }
after_base& tpie::pipelining::parallel_bits::state_base::output |
( |
size_t |
idx | ) |
|
|
inline |
Get the specified after instance.
Serves two purposes: First, it enables easy construction of the pipeline graph at runtime. Second, it is used by before to send batch signals to after.
Shared state, must have mutex to use.
Definition at line 273 of file base.h.
273 {
return *m_outputs[idx]; }
void tpie::pipelining::parallel_bits::state_base::set_input_ptr |
( |
size_t |
idx, |
|
|
node * |
v |
|
) |
| |
|
inline |
Must not be used concurrently.
Definition at line 245 of file base.h.
void tpie::pipelining::parallel_bits::state_base::set_output_ptr |
( |
size_t |
idx, |
|
|
after_base * |
v |
|
) |
| |
|
inline |
Must not be used concurrently.
Definition at line 250 of file base.h.
void tpie::pipelining::parallel_bits::state_base::transition_state |
( |
size_t |
idx, |
|
|
worker_state |
from, |
|
|
worker_state |
to |
|
) |
| |
|
inline |
Shared state, must have mutex to use.
Definition at line 281 of file base.h.
References tpie::log_error().
282 if (m_states[idx] != from) {
283 std::stringstream ss;
284 ss << idx <<
" Invalid state transition " << from <<
" -> " << to <<
"; current state is " << m_states[idx];
286 throw exception(ss.str());
logstream & log_error()
Return logstream for writing error log messages.
mutex_t tpie::pipelining::parallel_bits::state_base::mutex |
Single mutex.
Definition at line 220 of file base.h.
cond_t tpie::pipelining::parallel_bits::state_base::producerCond |
Condition variable.
Who waits: The producer, with the single mutex (waits until at least one worker has state = IDLE or state = OUTPUTTING).
Who signals: The par_after, when a worker is OUTPUTTING.
Definition at line 228 of file base.h.
size_t tpie::pipelining::parallel_bits::state_base::runningWorkers |
Shared state, must have mutex to write.
Definition at line 242 of file base.h.
cond_t* tpie::pipelining::parallel_bits::state_base::workerCond |
Condition variable, one per worker.
Who waits: The worker's par_before when waiting for input (wait for state = PROCESSING), the worker's par_after when waiting for output to be read (wait for state = IDLE). Waits with the single mutex.
Who signals: par_producer, when input has been written (sets state to PROCESSING). par_consumer, when output has been read (sets state to IDLE).
Definition at line 239 of file base.h.
The documentation for this class was generated from the following file: