Подтвердить что ты не робот

С Boost.Fiber делает С++ на один шаг ближе к процессу/потокам стиля Erlang?

Я читаю http://olk.github.io/libs/fiber/doc/html/ Мне кажется, что с Boost.Fiber С++ приближается к способности Erlang иметь тысячи "процессов", также известных как "green processes [threads]" http://en.wikipedia.org/wiki/Green_threads.

Мой вопрос в том, готов ли Boost.Fiber к производству, существуют ли сейчас альтернативы С++, которые имеют лучшую документацию и примеры? Кто-то упомянул легкие потоки, но я не могу найти ссылку на него. Один последний вопрос: почему стандарт С++ не включает Fibers?

Причина, по которой меня это интересует, заключается в том, что у меня есть обновления в реальном времени, когда изменение стоимости может влиять на (сотни) сотен/тысяч небольших, но смущающих параллельных вычислений. Модель потока С++ работает не очень хорошо, imo. Пожалуйста, нет GPU, так как в настоящее время требуется слишком много времени для передачи информации на GPU и с него.

Я понимаю, что Erlang намного больше, чем это, поэтому, пожалуйста, не просвещайте меня по Erlang vs С++ в общем случае.

4b9b3361

Ответ 1

Boost.Fiber был рассмотрен сообществом Boost в январе 2014 года и, как выяснилось, нуждался в значительной дополнительной работе. Просмотрите результаты обзора сообщества на http://lists.boost.org/boost-announce/2014/01/0393.php.

С++ 17 также использует WinRT, такую ​​как модель потоковой передачи M: N, основанная на возобновляемых функциях с использованием предлагаемого ключевого слова ожидания. Microsoft внедрила поддержку в своем компиляторе, и помимо трюков для выделения магии памяти для фьючерсов это выглядит очень многообещающе. Соответствующим документом N является N4134 (http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2014/n4134.pdf), и, как вы увидите, если это принято, эта формулировка возобновляемых функций действительно обеспечит масштабируемость типа Erlang, даже если синтаксис немного тупое (эй, это С++, когда его синтаксис всегда прост!).

Конечно, если вам сейчас понадобится переносное решение, либо отправляйте маршрут без стекирования с ASIO (осторожно: он хрупкий), либо мелкозернистые обработчики ASIO с цепочками ASIO, используя экземпляр класса в качестве вашего состояния выполнения, которое является тем же самым или использовать Boost.Fiber в любом случае. Если вам нужна только Windows, я буду надаваться на собственные проприетарные расширения Microsoft, они очень не похожи на отказ от них, если они не откажутся от WinRT:)

Изменить: Автор Boost.Fiber сообщает мне, что с января 2015 года рекомендуемые изменения в обзоре сообщества завершены, и кроме улучшений документации Fiber считается готовым для включения в официальный Boost. Если это действительно так, то Fiber, вероятно, является лучшим решением, прежде чем официальная поддержка языка С++ 17 для окончательных возобновляемых функций появится в компиляторах.