hpx/lcos_distributed/server/object_semaphore.hpp

See Public API for a list of names and headers that are part of the public HPX API.

namespace hpx
namespace lcos
namespace server
template<typename ValueType>
struct object_semaphore : public components::managed_component_base<object_semaphore<ValueType>>

Public Types

template<>
using base_type = components::managed_component_base<object_semaphore>
template<>
using mutex_type = hpx::spinlock
template<>
using slist_option_type = boost::intrusive::member_hook<queue_thread_entry, typename queue_thread_entry::hook_type, &queue_thread_entry::slist_hook_>
template<>
using thread_queue_type = boost::intrusive::slist<queue_thread_entry, slist_option_type, boost::intrusive::cache_last<true>, boost::intrusive::constant_time_size<false>>
template<>
using value_slist_option_type = boost::intrusive::member_hook<queue_value_entry, typename queue_value_entry::hook_type, &queue_value_entry::slist_hook_>
template<>
using value_queue_type = boost::intrusive::slist<queue_value_entry, value_slist_option_type, boost::intrusive::cache_last<true>, boost::intrusive::constant_time_size<false>>

Public Functions

object_semaphore()
~object_semaphore()
void signal(ValueType const &val, std::uint64_t count)
void get(hpx::id_type const &lco)
void abort_pending(error ec)
void wait()

Public Members

HPX_DEFINE_COMPONENT_ACTION ( object_semaphore, abort_pending, abort_pending_action) private thread_queue_type hpx::lcos::server::object_semaphore::thread_queue_
mutex_type mtx_

Private Functions

void resume(std::unique_lock<mutex_type> &l)
struct queue_thread_entry

Public Types

template<>
typedef boost::intrusive::slist_member_hook<boost::intrusive::link_mode<boost::intrusive::normal_link>> hook_type

Public Functions

template<>
queue_thread_entry(hpx::id_type const &id)

Public Members

template<>
hpx::id_type id_
template<>
hook_type slist_hook_
struct queue_value_entry

Public Types

template<>
typedef boost::intrusive::slist_member_hook<boost::intrusive::link_mode<boost::intrusive::normal_link>> hook_type

Public Functions

template<>
queue_value_entry(ValueType const &val, std::uint64_t count)

Public Members

template<>
ValueType val_
template<>
std::uint64_t count_
template<>
hook_type slist_hook_