Класс single_assignment

Блок сообщений single_assignment — многоцелевой, многоисточниковый, упорядоченный propagator_block, способный хранить одно записываемое один раз message.

template<
   class _Type
>
class single_assignment : public propagator_block<multi_link_registry<ITarget<_Type>>, multi_link_registry<ISource<_Type>>>;

Параметры

  • _Type
    Тип полезных данных сохраненного и распространенного буфером сообщения.

Члены

Открытые конструкторы

Имя

Описание

Конструктор single_assignment::single_assignment

Перегружен. Создает блок сообщений single_assignment.

Деструктор single_assignment::~single_assignment

Уничтожает блок сообщений single_assignment.

Открытые методы

Имя

Описание

Метод single_assignment::has_value

Проверяет, инициализирован ли этот блок обмена сообщениями single_assignment со значением.

Метод single_assignment::value

Возвращает ссылку на текущие полезную нагрузку сообщения, хранящуюся в блоке сообщений single_assignment.

Защищенные методы

Имя

Описание

Метод single_assignment::accept_message

Принимает сообщение, предложенное этим блоком сообщений single_assignment, возвращая копию сообщения вызывающему объекту.

Метод single_assignment::consume_message

Потребляет сообщение, ранее предложенное single_assignment и зарезервированное целевым объектом, возвращая копию сообщения вызывающему объекту.

Метод single_assignment::link_target_notification

Обратный вызов, который уведомляет, что новая цель связана с этим блоком сообщений single_assignment.

Метод single_assignment::propagate_message

Асинхронно передает сообщение из блока ISource в этот блок сообщений single_assignment. Вызывается методом propagate при вызове исходного блока.

Метод single_assignment::propagate_to_any_targets

Помещает message_PMessage в данный блок обмена сообщениями single_assignment и предлагает его всем связанным целевым объектам.

Метод single_assignment::release_message

Освобождает предыдущее резервирование сообщения. (Переопределяет конструктор source_block::release_message).

Метод single_assignment::reserve_message

Резервирует сообщение, которое было предложено этим блоком сообщений single_assignment. (Переопределяет конструктор source_block::reserve_message).

Метод single_assignment::resume_propagation

Возобновляет распространение после отмены резервирования. (Переопределяет конструктор source_block::resume_propagation).

Метод single_assignment::send_message

Синхронно передает сообщение из блока ISource в этот блок сообщений single_assignment. Вызывается методом send при вызове исходного блока.

Заметки

Блок сообщений single_assignment распространяет копии его сообщения для каждой цели.

Дополнительные сведения см. в разделе Асинхронные блоки сообщений.

Иерархия наследования

ISource

source_block

ITarget

propagator_block

single_assignment

Требования

Заголовок: agents.h

Пространство имен: Concurrency

См. также

Ссылки

Пространство имен Concurrency

Класс overwrite_buffer

Класс unbounded_buffer