Boost -Asio - проблемы, создающие отмену/перезапутимые задачиC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Boost -Asio - проблемы, создающие отмену/перезапутимые задачи

Сообщение Anonymous »

фон/цель
Я очень на ранних стадиях обучения Asio. В настоящее время моя цель состоит в том, чтобы IO_Context управлял несколькими долгосрочными задачами, над которыми будет выполнено несколько рабочих потоков. Каждая задача имеет возможность стать устаревшей/недействительной в какой -то момент времени, поэтому я поддерживаю ASIO :: Cancellation_Signal наряду с будущим, которое используется для получения результатов, если он успешно завершил . /> Прогресс: < /h1>
API, который я пытаюсь реализовать, является чем-то вроде: < /p>

Код: Выделить всё

template  struct CancellableTask {
// future/cancellation_signal are Non-CopyConstructible.
// Keep shared_ptrs to allow CopyConstructible-ness
std::shared_ptr m_task;
std::shared_ptr m_cancel;

asio::cancellation_slot cancelSlot() { return m_cancel->slot(); }
void cancel() { m_cancel->emit(asio::cancellation_type::all); }
};

namespace util {

template  struct WrappedType;

template 
struct WrappedType {
using type = T;
};

} // namespace util

namespace task {

template  auto spawn(asio::io_context& io, Coroutine&& coroutine) {
using FutureReturn = util::WrappedType::type;
using FutureType = std::future;

CancellableTask task{
std::make_shared(), std::make_shared()
};

*task.m_task = co_spawn(
io,
std::forward(coroutine),
asio::bind_cancellation_slot(task.cancelSlot(), asio::use_future)
);

return task;
}
} // namespace task
< /code>
Использование выглядит следующим образом: < /p>
asio::awaitable sleepTask(std::chrono::seconds duration) try {
auto ex = co_await asio::this_coro::executor;
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79606106/boost-asio-issues-creating-cancellable-restartable-tasks[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Boost -Asio - проблемы, создающие отмену/перезапутимые задачи
    Anonymous » » в форуме C++
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Boost -Asio - проблемы, создающие отмену/перезапутимые задачи
    Anonymous » » в форуме C++
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Boost :: asio :: io_context прекращает выполнять новые задачи
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как обнаружить отмену задачи по группе задач
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Как обнаружить отмену задачи по группе задач
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»