OpenDDS
Snapshot(2023/04/07-19:43)
|
#include <ConditionVariable.h>
Public Member Functions | |
ConditionVariable (Mutex &mutex) | |
CvStatus | wait (ThreadStatusManager &thread_status_manager) |
Block until thread is woken up. More... | |
CvStatus | wait_until (const MonotonicTimePoint &expire_at, ThreadStatusManager &thread_status_manager) |
Block until woken up or until expire_at. Same as wait() if expire_at is zero. More... | |
CvStatus | wait_for (const TimeDuration &expire_in, ThreadStatusManager &thread_status_manager) |
Block until woken up or for expire_in. Same as wait() if expire_in is zero. More... | |
bool | notify_one () |
Unblock one of the threads waiting on this condition. More... | |
bool | notify_all () |
Unblock all of the threads waiting on this condition. More... | |
Protected Attributes | |
ACE_Condition< Mutex > | impl_ |
ACE_Condition wrapper based on std::condition_variable that enforces monotonic time behavior.
Besides the fact that it only works with ACE Mutexes, the major difference between this and std::condition_variable_any, the generalized form of std::condition_variable, is that it takes the mutex as a constructor argument, where the std::condition_variables take them as method arguments.
Definition at line 45 of file ConditionVariable.h.
|
inlineexplicit |
Definition at line 47 of file ConditionVariable.h.
|
inline |
Unblock all of the threads waiting on this condition.
Definition at line 106 of file ConditionVariable.h.
Referenced by OpenDDS::DCPS::DataReaderImpl::add_association(), OpenDDS::DCPS::DomainParticipantImpl::assign_handle(), OpenDDS::DCPS::DispatchService::cancel(), OpenDDS::DCPS::ThreadPerConnectionSendTask::close(), OpenDDS::DCPS::ReplayerImpl::data_delivered(), OpenDDS::DCPS::WriteDataContainer::data_delivered(), OpenDDS::DCPS::ReplayerImpl::data_dropped(), OpenDDS::DCPS::WriteDataContainer::data_dropped(), OpenDDS::DCPS::TypeObjReqCond::done(), OpenDDS::DCPS::DataReaderImpl::enable(), OpenDDS::DCPS::DomainParticipantImpl::handle_exception(), OpenDDS::DCPS::MessageTracker::message_delivered(), OpenDDS::DCPS::MessageTracker::message_dropped(), OpenDDS::DCPS::ReactorTask::open_reactor_task(), OpenDDS::DCPS::WriteDataContainer::remove_oldest_sample(), OpenDDS::DCPS::WriteDataContainer::remove_reader_acks(), OpenDDS::DCPS::ThreadPool::run(), OpenDDS::DCPS::DispatchService::run_event_loop(), OpenDDS::DCPS::DispatchService::shutdown(), OpenDDS::DCPS::ReactorTask::svc(), OpenDDS::DCPS::WriteDataContainer::unregister_all(), OpenDDS::DCPS::WriteDataContainer::update_acked(), and OpenDDS::DCPS::WriteDataContainer::wakeup_blocking_writers().
|
inline |
Unblock one of the threads waiting on this condition.
Definition at line 94 of file ConditionVariable.h.
Referenced by OpenDDS::DCPS::QueueTaskBase< DataLink_rch >::add(), OpenDDS::DCPS::ThreadPerConnectionSendTask::add_request(), OpenDDS::DCPS::QueueTaskBase< DataLink_rch >::close(), OpenDDS::DCPS::DispatchService::dispatch(), OpenDDS::DCPS::ThreadPool::run(), OpenDDS::DCPS::DispatchService::schedule(), DDS::WaitSet::signal(), OpenDDS::DCPS::DcpsUpcalls::svc(), OpenDDS::DCPS::PerConnectionSynch::unregister_worker_i(), OpenDDS::DCPS::PerConnectionSynch::work_available(), and OpenDDS::DCPS::DcpsUpcalls::writer_done().
|
inline |
Block until thread is woken up.
Definition at line 53 of file ConditionVariable.h.
Referenced by OpenDDS::DCPS::DomainParticipantImpl::await_handle(), OpenDDS::DCPS::ReplayerImpl::cleanup(), OpenDDS::DCPS::DomainParticipantImpl::delete_contained_entities(), OpenDDS::DCPS::ThreadPool::join_all(), OpenDDS::DCPS::ReactorTask::open_reactor_task(), TAO_DDS_DCPSInfo_i::remove_domain_participant(), OpenDDS::DCPS::ThreadPool::run(), OpenDDS::DCPS::DispatchService::run_event_loop(), OpenDDS::DCPS::DispatchService::shutdown(), OpenDDS::RTPS::Spdp::shutdown(), OpenDDS::DCPS::DcpsUpcalls::svc(), OpenDDS::DCPS::PerConnectionSynch::svc(), OpenDDS::DCPS::ThreadPerConnectionSendTask::svc(), OpenDDS::DCPS::QueueTaskBase< DataLink_rch >::svc(), OpenDDS::DCPS::ThreadPool::ThreadPool(), OpenDDS::DCPS::TypeObjReqCond::wait(), DDS::WaitSet::wait(), OpenDDS::DCPS::WriteDataContainer::wait_ack_of_seq(), OpenDDS::DCPS::ConditionVariable< ACE_Thread_Mutex >::wait_for(), OpenDDS::DCPS::ReactorTask::wait_for_startup_i(), and OpenDDS::DCPS::ConditionVariable< ACE_Thread_Mutex >::wait_until().
|
inline |
Block until woken up or for expire_in. Same as wait() if expire_in is zero.
Definition at line 84 of file ConditionVariable.h.
|
inline |
Block until woken up or until expire_at. Same as wait() if expire_at is zero.
Definition at line 66 of file ConditionVariable.h.
Referenced by OpenDDS::DCPS::DomainParticipantImpl::await_handle(), OpenDDS::DCPS::WriteDataContainer::obtain_buffer(), OpenDDS::DCPS::DispatchService::run_event_loop(), OpenDDS::DCPS::DcpsUpcalls::svc(), OpenDDS::DCPS::QueueTaskBase< DataLink_rch >::svc(), DDS::WaitSet::wait(), OpenDDS::DCPS::WriteDataContainer::wait_ack_of_seq(), OpenDDS::DCPS::ConditionVariable< ACE_Thread_Mutex >::wait_for(), OpenDDS::DCPS::MessageTracker::wait_messages_pending(), and OpenDDS::DCPS::WriteDataContainer::wait_pending().
|
protected |
Definition at line 118 of file ConditionVariable.h.
Referenced by OpenDDS::DCPS::ConditionVariable< ACE_Thread_Mutex >::notify_all(), OpenDDS::DCPS::ConditionVariable< ACE_Thread_Mutex >::notify_one(), OpenDDS::DCPS::ConditionVariable< ACE_Thread_Mutex >::wait(), and OpenDDS::DCPS::ConditionVariable< ACE_Thread_Mutex >::wait_until().