Comments 17
Здорово! Неделю назад делал свой «велосипед», не зная про эту библиотеку.
Оказывается все уже изобретено. Спасибо переводчику!
Оказывается все уже изобретено. Спасибо переводчику!
Добрый день,
А если я хочу передать текстовый файл длиной 10 MByte? Как быть в этом случае? Я не хочу на принимающей стороне (сервер) делать модуль который будет аккумулировать части сообщений и затем собирать их в одно большое сообщение. Спасибо!
А если я хочу передать текстовый файл длиной 10 MByte? Как быть в этом случае? Я не хочу на принимающей стороне (сервер) делать модуль который будет аккумулировать части сообщений и затем собирать их в одно большое сообщение. Спасибо!
обеспечивающие бесперебойные асинхронные операции без распределения
Что-что, простите?
без аллокаций памяти
аллокацию довольно часто называют распределением, думаю можно считать устоявшимся термином., просто как-то мимо вас прошло)
А можно пример где так называют? И вы точно не путаете с «выделением»?
Ибо пока что отдает гугл-транслейтом
Ибо пока что отдает гугл-транслейтом
Ну наконец-то какой-то конвейер с backpressure.
Может, теперь reactor .net доделают, и можно будет возвращаться на .net :)
Может, теперь reactor .net доделают, и можно будет возвращаться на .net :)
А чем вас не устраивали вот эти?
TPL Dataflow
Rx.NET (System.Reactive) — правда, тут backpressure только синхронный
Akka.NET Streams
TPL Dataflow
Rx.NET (System.Reactive) — правда, тут backpressure только синхронный
Akka.NET Streams
Могу ошибаться, но в rx вроде как нет backpressure вообще — простой producer/consumer. В data flow ещё есть bounded buffer, но там на клиенте надо делать все — исходя из результата post. А в pipelines backpressure сделан внутри самой либы и flush блочит producer’a.
В rx можно получить backpressure в некоторых операторах, если не возвращать управление из OnNext.
Кстати, вот еще одна библиотека: System. Threading.Channels
По поводу rx это врядли можно считать поддержкой backpressure т.к имплементируешь сам. По поводу channels — оно вроде как ещё очень далеко от production ready функционала. Все эти вещи впринципе можно сделать на Blocking Collection из коробки далеко не надо ходить. Другое дело что все это не затачивалось под оптимизацию нагрузки на gc, и работу с sequence/slices потока — инструменты для разных задач будем говорить прямо.
Ну, про Rx тут уже сказали, а Akka слишком тяжеловесна для массового inproc (да, у нас есть немного Акки inter-proc и на важных участках inproc)
Довольно интересная библиотека на самом деле. Нашел ей применение при решении задачи, в которой нужно было очень быстро, используя как можно меньше памяти, парсить среднего размера файлы (20-40 мб) в структуры данных приложения. По итогам написал заметку о примере использования, может, кому-нибудь пригодится: timiskhakov.github.io/posts/exploring-spans-and-pipelines.
Sign up to leave a comment.
System.IO.Pipelines: высокоэффективный IO в .NET