Описание тега boost-coroutine

Boost.Coroutine предоставляет шаблоны для обобщенных подпрограмм, которые позволяют приостанавливать и возобновлять выполнение в определенных местах. Он сохраняет локальное состояние выполнения и позволяет повторно вводить подпрограммы более одного раза (полезно, если состояние должно сохраняться при вызовах функций)
0 ответов

Building Boost.Coroutines2 примеры

Я пытаюсь собрать примеры сопрограмм Boost 1.59 и coroutine2.Я создал boost с помощью b2 (полная сборка) и использую CMake для создания проекта VC2015 для создания примеров. Все примеры сопрограмм собраны и работают просто отлично, но я получаю ссыл…
10 ноя '15 в 07:40
0 ответов

Отсрочка выхода сопрограммы

Кажется, моя проблема проистекает из того факта, что openssl не имеет стиля передачи продолжения для обратных вызовов, таких как указание имени сервера (SNI), но я пытаюсь заставить его использовать его. Я хочу не блокировать рабочий поток при чтени…
22 окт '15 в 16:30
0 ответов

void boost:: coroutines:: detail:: push_coroutine_impl<void>:: push (): утверждение `! is_running()'не удалось

Предмет Это приложение POC использует Boost ASIO с сопрограммами для обслуживания HTTP-запросов. Как только запрос полностью прочитан, обработчик соединения переносит фактическую обработку запроса в отдельный пул потоков для операций, связанных с ЦП…
0 ответов

Повышение ASIO и co_await- использовать с любым сторонним обратным вызовом?

Простая функция: awaitable&lt;std::size_t&gt; write(const std::vector&lt;uint8_t&gt;&amp; data) { auto token = co_await this_coro::token(); return co_await async_write(serialport_, buffer(data), token); } Можно ожидать с помощью co_await write(my_da…
01 мар '19 в 14:10
1 ответ

Неожиданный вывод с буст-сопрограммой2

Это тестовый пример #include &lt;boost/coroutine2/all.hpp&gt; #include &lt;iostream&gt; #include &lt;cassert&gt; int main() { auto sum = 0; using Coroutine_t = boost::coroutines2::coroutine&lt;int&gt;::push_type; auto coro = Coroutine_t{[&amp;](auto…
17 сен '17 в 14:50
2 ответа

Как использовать -fsplit-stack в большом проекте

Недавно я опубликовал вопрос о сегментации стека и сопутствующих бустах, но похоже, что подход -fsplit-stack работает только с исходными файлами, скомпилированными с этим флагом, среда выполнения прерывается, когда вы переходите к другой функции, ко…
20 сен '17 в 04:05
1 ответ

Как установить код ошибки в asio::yield_context

Я хотел бы создать асинхронную функцию, которая принимает в качестве последнего аргумента boost:: asio:: yield_context. Например: int async_meaning_of_life(asio::yield_context yield); Я также хотел бы согласиться с тем, как Asio возвращает коды ошиб…
20 окт '17 в 15:17
1 ответ

Как сделать так, чтобы сопрограмма всегда работала в одном потоке?

Я хочу принять соединение в потоке-0, затем отправить этот сокет в один из других потоков (1 - 31) для балансировки нагрузки, и я хочу, чтобы все остальные операции с этим сокетом были в том же потоке, используя coroutine - чтобы избежать переключен…
1 ответ

Что вызывает случайный сбой в boost::coroutine?

У меня есть многопоточное приложение, которое использует boost:: asio и boost:: coroutine через его интеграцию в boost:: asio. Каждый поток имеет свой собственный объект io_service. Единственным общим состоянием между потоками являются пулы соединен…
2 ответа

Чем сопрограммы без стеков отличаются от сопрограмм со стеками?

Фон: Я спрашиваю об этом, потому что в настоящее время у меня есть приложение со многими (от сотен до тысяч) потоков. Большинство из этих потоков простаивают большую часть времени, ожидая, пока рабочие элементы будут помещены в очередь. Когда рабочи…
11 мар '15 в 01:57
1 ответ

Повысить сопрограммы с использованием будущего

Я пытаюсь сделать карту с результатом сопрограммы.Я искал пример, показывающий, как получить будущее сопрограммы.Мне нужно генерировать задачи, чтобы потом использовать их с asio.это код для сопрограммы: std::map&lt;std::string, boost::shared_ptr&lt…
1 ответ

Непонятная ошибка сегментации при использовании Boost Coroutine(1.55)?

Я пишу кусок кода, который получит Segmentation fault, Я не уверен, что это ошибка Boost Coroutine или мой код ниже: #include &lt;string&gt; #include &lt;functional&gt; #include &lt;vector&gt; #include &lt;fstream&gt; #include &lt;boost/coroutine/co…
18 янв '15 в 02:58
2 ответа

Boost.Coroutine не использует сегментированные стеки

Может ли кто-нибудь дать мне пример того, как я могу использовать сегментированные стеки с сопрограммами повышения? Нужно ли аннотировать каждую функцию, вызываемую из сопрограммы, специальным split-stack атрибут? Когда я пытаюсь написать программу,…
18 сен '17 в 18:58
2 ответа

Пример использования Asio и Coroutine2

Во время чтения документации coroutine2 Я нашел хороший фрагмент кода, который показывает, как использовать его с asio Для справки вот код из документации: void session(boost::asio::io_service&amp; io_service){ // construct TCP-socket from io_servic…
0 ответов

Доступ к переменным-членам в boost::asio:: порожденная сопрограмма

Я пытаюсь добавить некоторые асинхронные операции глубоко в существующую кодовую базу, которая вызывается внутри веб-сервера, реализованного с использованием pion (который сам использует boost::asio). Текущий код должен продолжать работать в контекс…
21 ноя '15 в 12:30
1 ответ

Могу ли я порождать несколько сопрограмм на одной нити без их наложения?

Я пытаюсь призвать boost::asio::spawn дважды к тому же boost::asio::io_context::strandпередавая сопрограмму каждый раз, и я ожидал, что две сопрограммы будут выполняться одна за другой, но вместо этого они выполняются параллельно. Вот код, который и…
09 сен '18 в 16:14
1 ответ

Как сделать асинхронное программирование на C++ более линейным (сопрограммы?)

В C++14 я хотел бы создать механизм для использования асинхронных API "последовательным" способом, используя один поток. Чтобы быть более явным, я хотел бы добиться что-то вроде этого: // Transform AsyncOp1 into SyncOp1 // SyncOp1 returns after Asyn…
1 ответ

Невозможно связать с библиотеками повышения

Я не могу заставить свой g ++ скомпилировать и связать минимальную программу повышения скорости (и я предполагаю, что и другие компоненты) на моей машине. // example.cpp #include &lt;boost/coroutine/all.hpp&gt; #include &lt;iostream&gt; using namesp…
01 янв '17 в 06:31
1 ответ

Ускорение сопрограммы не работает на Windows x86_64?

Я скомпилировал пример parallel.cpp который поставляется с boost::coroutines::coroutine как 32-битная, так и 64-битная программа. Они оба компилируются и связываются без ошибок. 32-разрядная программа работает и ведет себя, как и ожидалось, но 64-ра…
11 дек '12 в 14:56
1 ответ

Boost:: пример сопрограммы не работает

В библиотеке Boost есть интересная вещь - сопрограммы. Я пытаюсь простой пример факториала, но есть ошибка: factorial.cpp (35): ошибка C2039: "self": ​​не является членом "boost:: coroutines:: coroutine" Как скомпилировать этот и другие примеры? Мож…
20 авг '14 в 21:05