Common state in parallel pipelining library. More...
#include <tpie/pipelining/parallel/base.h>
Public Types | |
| typedef std::mutex | mutex_t |
| typedef std::condition_variable | cond_t |
| typedef std::unique_lock< std::mutex > | lock_t |
Public Member Functions | |
| void | set_input_ptr (size_t idx, node *v) |
| Must not be used concurrently. More... | |
| void | set_output_ptr (size_t idx, after_base *v) |
| Must not be used concurrently. More... | |
| node & | input (size_t idx) |
| Get the specified before instance. More... | |
| after_base & | output (size_t idx) |
| Get the specified after instance. More... | |
| worker_state | get_state (size_t idx) |
| Shared state, must have mutex to use. More... | |
| void | transition_state (size_t idx, worker_state from, worker_state to) |
| Shared state, must have mutex to use. More... | |
Public Attributes | |
| const options | opts |
| mutex_t | mutex |
| Single mutex. More... | |
| cond_t | producerCond |
| Condition variable. More... | |
| cond_t * | workerCond |
| Condition variable, one per worker. More... | |
| size_t | runningWorkers |
| Shared state, must have mutex to write. More... | |
| std::exception_ptr | eptr |
| Exception thrown in worker thread to be rethrown in main thread. More... | |
Protected Member Functions | |
| state_base (const options opts) | |
Protected Attributes | |
| 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.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Shared state, must have mutex to use.
Definition at line 280 of file base.h.
References tpie::log_error().
| std::exception_ptr tpie::pipelining::parallel_bits::state_base::eptr |
| mutex_t tpie::pipelining::parallel_bits::state_base::mutex |
| cond_t tpie::pipelining::parallel_bits::state_base::producerCond |
| size_t tpie::pipelining::parallel_bits::state_base::runningWorkers |
| 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).