Я ищу встроенную, современную и высокопроизводительную (т. е. минимизирующую выделение, копирование и т. д.) абстракцию, позволяющую использовать шаблоны производитель-потребитель больших потоков данных (т. е. миллионов точек данных) в памяти. в С#. Данные будут создаваться и потребляться пакетами (то есть одновременно большими массивами точек, а не одной точкой).
В .NET уже существует несколько подобных абстракций для обработки связанных сценариев, но они кажется, не очень хорошо соответствует моим требованиям:
System.Threading.Channel.Channel. Это было бы уместно, если бы оно могло поддерживать пакетное чтение и запись (например, если ReadAsync()
может возвращать массив T и т. д.). В нынешнем виде он может записывать и читать только одну точку одновременно, что будет неэффективно для больших потоков данных.
System.IO.Pipelines.Pipe. Кажется, это подходящий класс, за исключением того, что он может обрабатывать только потоки байтов. Мне нужно что-то, что поддерживает дженерики и может обрабатывать потоки произвольных объектов.
[*]System.Buffers.ReadOnlySequence. Я не понял, как эта штука работает, но выглядит актуально...
[*]Прокатываю свою собственную с помощью Span, Memory
и все низкоуровневое содержимое. Это то, чего я пытаюсь избежать, потому что это кажется обычным сценарием и для него уже должно быть что-то OOTB.
Я ищу встроенную, современную и высокопроизводительную (т. е. минимизирующую выделение, копирование и т. д.) абстракцию, позволяющую использовать шаблоны производитель-потребитель больших потоков данных (т. е. миллионов точек данных) в памяти. в С#. Данные будут создаваться и потребляться пакетами (то есть одновременно большими массивами точек, а не одной точкой). В .NET уже существует несколько подобных абстракций для обработки связанных сценариев, но они кажется, не очень хорошо соответствует моим требованиям: [list] [*][code]System.Threading.Channel.Channel. Это было бы уместно, если бы оно могло поддерживать пакетное чтение и запись (например, если ReadAsync()[/code] может возвращать массив T и т. д.). В нынешнем виде он может записывать и читать только одну точку одновременно, что будет неэффективно для больших потоков данных.
[*][code]System.IO.Pipelines.Pipe. Кажется, это подходящий класс, за исключением того, что он может обрабатывать только потоки байтов. Мне нужно что-то, что поддерживает дженерики и может обрабатывать потоки произвольных объектов.
[*]System.Buffers.ReadOnlySequence. Я не понял, как эта штука работает, но выглядит актуально...
[*]Прокатываю свою собственную с помощью Span, Memory[/code] и все низкоуровневое содержимое. Это то, чего я пытаюсь избежать, потому что это кажется обычным сценарием и для него уже должно быть что-то OOTB.
[/list] Будем очень признательны за любые предложения!
Я реализую модель производитель-потребитель на C++, используя общую память и семафоры в Linux. Производитель записывает строки в буфер общей памяти, а потребитель читает эти строки. На стороне производителя все выглядит правильно: с помощью проверки...
Я реализую модель производитель-потребитель на C++, используя общую память и семафоры в Linux. Производитель записывает строки в буфер общей памяти, а потребитель читает эти строки. На стороне производителя все выглядит правильно: с помощью проверки...
Я работаю над реализацией шаблона производитель-потребитель в приложении на основе .NET, используя драйвер Npgsql для подключения к CockroachDB, и мне нужна помощь.
Сценарий:
При использовании асинхронной задачи для выполнения запросов приложение...