Класс choice

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

template<
   class _Type
>
class choice: public ISource<size_t>;

Параметры

  • _Type
    Тип, основанный на tuple, представляющий полезные нагрузки входных источников.

Члены

Общедоступные Typedefs

Name

Описание

type

Псевдоним типа для _Type.

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

Name

Описание

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

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

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

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

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

Name

Описание

Метод choice::accept

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

Метод choice::acquire_ref

Получает значение счетчика ссылок на этот блок сообщений для choice, чтобы предотвратить удаление.

Метод choice::consume

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

Метод choice::has_value

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

Метод choice::index

Возвращает индекс в tuple, представляющий элемент, отобранный блоком сообщений choice.

Метод choice::link_target

Связывает целевой блок с этим блоком сообщений choice.

Метод choice::release

Освобождает предыдущее успешное резервирование сообщения.

Метод choice::release_ref

Освобождает значение счетчика ссылок на этот блок сообщений choice.

Метод choice::reserve

Резервирует сообщение, которое было предложено этим блоком сообщений choice.

Метод choice::unlink_target

Удаляет связь целевого блока с этим блоком сообщений choice.

Метод choice::unlink_targets

Удаляет связь всех целевых объектов с этим блоком сообщений choice. (Переопределяет ISource::unlink_targets.)

Метод choice::value

Получает сообщение, индекс которого был выбран блоком сообщений choice.

Заметки

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

Для получения дополнительной информации см. Асинхронные блоки сообщений.

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

ISource

choice

Требования

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

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

См. также

Ссылки

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

Класс join

Класс single_assignment

Функция make_choice

Класс tuple