BornAgain
1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
|
Thread-safe stack borrowed from Anthony Williams, C++ Concurrency in Action, Second edition. More...
Public Member Functions | |
threadsafe_stack () | |
threadsafe_stack (const threadsafe_stack &other) | |
~threadsafe_stack () | |
bool | empty () const |
threadsafe_stack & | operator= (const threadsafe_stack &other)=delete |
void | push (T new_value) |
void | stop () |
Terminates waiting in wait_and_pop methods. More... | |
std::shared_ptr< T > | try_pop () |
bool | try_pop (T &value) |
void | update_top (T new_value) |
Updates top value in a stack. More... | |
std::shared_ptr< T > | wait_and_pop () |
void | wait_and_pop (T &value) |
Private Attributes | |
std::stack< T > | data |
std::condition_variable | data_condition |
std::atomic< bool > | in_waiting_state {true} |
std::mutex | m |
Thread-safe stack borrowed from Anthony Williams, C++ Concurrency in Action, Second edition.
Definition at line 41 of file threadsafestack.h.
|
inline |
Definition at line 49 of file threadsafestack.h.
|
inline |
Definition at line 50 of file threadsafestack.h.
References ModelView::threadsafe_stack< T >::stop().
|
inline |
Definition at line 51 of file threadsafestack.h.
References ModelView::threadsafe_stack< T >::data, and ModelView::threadsafe_stack< T >::m.
|
inline |
Definition at line 117 of file threadsafestack.h.
References ModelView::threadsafe_stack< T >::data, and ModelView::threadsafe_stack< T >::m.
Referenced by TEST_F().
|
delete |
|
inline |
Definition at line 58 of file threadsafestack.h.
References ModelView::threadsafe_stack< T >::data, ModelView::threadsafe_stack< T >::data_condition, and ModelView::threadsafe_stack< T >::m.
Referenced by TEST_F().
|
inline |
Terminates waiting in wait_and_pop methods.
Definition at line 125 of file threadsafestack.h.
References ModelView::threadsafe_stack< T >::data_condition, ModelView::threadsafe_stack< T >::in_waiting_state, and ModelView::threadsafe_stack< T >::m.
Referenced by ModelView::threadsafe_stack< T >::~threadsafe_stack(), and TEST_F().
|
inline |
Definition at line 107 of file threadsafestack.h.
References ModelView::threadsafe_stack< T >::data, and ModelView::threadsafe_stack< T >::m.
|
inline |
Definition at line 97 of file threadsafestack.h.
References ModelView::threadsafe_stack< T >::data, and ModelView::threadsafe_stack< T >::m.
Referenced by TEST_F().
|
inline |
Updates top value in a stack.
Definition at line 67 of file threadsafestack.h.
References ModelView::threadsafe_stack< T >::data, ModelView::threadsafe_stack< T >::data_condition, and ModelView::threadsafe_stack< T >::m.
Referenced by TEST_F().
|
inline |
Definition at line 86 of file threadsafestack.h.
References ModelView::threadsafe_stack< T >::data, ModelView::threadsafe_stack< T >::data_condition, ModelView::threadsafe_stack< T >::in_waiting_state, and ModelView::threadsafe_stack< T >::m.
|
inline |
Definition at line 76 of file threadsafestack.h.
References ModelView::threadsafe_stack< T >::data, ModelView::threadsafe_stack< T >::data_condition, ModelView::threadsafe_stack< T >::in_waiting_state, and ModelView::threadsafe_stack< T >::m.
Referenced by TEST_F().
|
private |
Definition at line 43 of file threadsafestack.h.
Referenced by ModelView::threadsafe_stack< T >::threadsafe_stack(), ModelView::threadsafe_stack< T >::empty(), ModelView::threadsafe_stack< T >::push(), ModelView::threadsafe_stack< T >::try_pop(), ModelView::threadsafe_stack< T >::update_top(), and ModelView::threadsafe_stack< T >::wait_and_pop().
|
private |
Definition at line 45 of file threadsafestack.h.
Referenced by ModelView::threadsafe_stack< T >::push(), ModelView::threadsafe_stack< T >::stop(), ModelView::threadsafe_stack< T >::update_top(), and ModelView::threadsafe_stack< T >::wait_and_pop().
|
private |
Definition at line 46 of file threadsafestack.h.
Referenced by ModelView::threadsafe_stack< T >::stop(), and ModelView::threadsafe_stack< T >::wait_and_pop().
|
mutableprivate |
Definition at line 44 of file threadsafestack.h.
Referenced by ModelView::threadsafe_stack< T >::threadsafe_stack(), ModelView::threadsafe_stack< T >::empty(), ModelView::threadsafe_stack< T >::push(), ModelView::threadsafe_stack< T >::stop(), ModelView::threadsafe_stack< T >::try_pop(), ModelView::threadsafe_stack< T >::update_top(), and ModelView::threadsafe_stack< T >::wait_and_pop().