170 похожих чатов

А какой контекст? При слове "pipeline" я прежде всего думаю

о unix пайпах. Но есть и redis, и прочее. Channel тоже разные значения имеет

18 ответов

2 просмотра

System.IO.Pipelines и System.Threading.Channels

Andrew-Shurunov Автор вопроса
Mikhail Lomonosov
System.IO.Pipelines и System.Threading.Channels

Они решают одни и те же задачи. Channels проще и удобнее, pipelines более низкого уровня, может это иногда полезно

Andrew Shurunov
Они решают одни и те же задачи. Channels проще и у...

а почему pipeline более низкого уровня ? за счет чего.. просто судя по паре демок и там и там струткуру прям 1 в 1

Andrew-Shurunov Автор вопроса
Mikhail Lomonosov
а почему pipeline более низкого уровня ? за счет ч...

Pipelines заставляют тебя думать о байтах и прочем, в channels такого нет.

Andrew-Shurunov Автор вопроса
Mikhail Lomonosov
с чего бы там также можно байты гонять

Я плохо помню эти dll и поэтому загуглил щас оф блог мягкотелых. И вот вижу в pipelines всякие буфера и прочее, а в channels трогать это не предлагают

Mikhail Lomonosov
System.IO.Pipelines и System.Threading.Channels

Судя из неймспейса можно сказать что пайп работает с данными(а-ля стрим), а вот канал с объектами потокобезопасно

Mikhail Lomonosov
System.IO.Pipelines и System.Threading.Channels

https://devblogs.microsoft.com/dotnet/system-io-pipelines-high-performance-io-in-net/ What problem does it solve? Correctly parsing data from a stream or socket is dominated by boilerplate code and has many corner cases, leading to complex code that is difficult to maintain. https://devblogs.microsoft.com/dotnet/an-introduction-to-system-threading-channels/ A channel is simply a data structure that’s used to store produced data for a consumer to retrieve, and an appropriate synchronization to enable that to happen safely, while also enabling appropriate notifications in both directions Ну собственно что я и говорил

Viacheslav
https://devblogs.microsoft.com/dotnet/system-io-pi...

я эт все читал просто я могу также в канала закинуть байты и будет такой же стримиг

Mikhail Lomonosov
я эт все читал просто я могу также в канала закину...

Значит не очень внимательно читал Пайп работает с пришедшими данными из вне и облегчает работу с выделением новой памяти. Ну допустим, у тебя есть тсп сокет и ты ждёшь когда кто-то постучится и даст тебе данные. Чтобы принять надо взять стрим и массив. Но вот в какой-то момент выделенной памяти для стрима не хватает и пишешь на этот счёт обработчик и т.д. и т.п. Так вот пайп решает эту задачу. Ты просто берешь его вместо стрима и получаешь весь набор данных без геморроя. Канал. Эта штука решает проблему продюсер/консьюмер у тебя в приложении, не из вне, при чем потокобезопасно. Например, делаешь очередь обработки строки, не важно какой. Создал продюсера и несколько консьюмеров. Чтобы консьюмеры друг друга не блочили надо это обработать. Или ещё больше геморроя если несколько продюсеров и несколько консьюмеров, вот тут вообще ад. Канал рассчитан решить данную проблему

Viacheslav
Значит не очень внимательно читал Пайп работает с...

хм погоди. с каналом разве не так ты также запустишь опрос того же tcpклиента в таске с циклом и просто запись байстов будет идти в канал. ну если атм можно больше одно консумера засунть то да эт отличие но я не вижу у канала коллекцию консумеров а вижу только также reader и writer. если только n-каналов пишут в один общий или наоборо из 1 в n отдельных но тольк очерез создание доп каналов для комутации если конечно я правильно все понял

Mikhail Lomonosov
хм погоди. с каналом разве не так ты также запусти...

Делаешь долгие таски продюсеры в количестве n, всем даёшь ссылку на канал записи. Тоже самое для чтения. Профит

Viacheslav
Делаешь долгие таски продюсеры в количестве n, все...

ага можно так. но веселее ж если под каждый канал а потом можно делать веселые штуки типоп tpl dataflow

Mikhail Lomonosov
хм погоди. с каналом разве не так ты также запусти...

И ты опять все путаешь Канал это способ передать от создателя потребителю в рамках своего приложения без выстрела в ногу

Viacheslav
И ты опять все путаешь Канал это способ передать о...

Т.е. то что кинешь в канал, то и придет потребителю У пайпа другая задача. Он не знает сколько данных придет из вне, но гарантирует их доставку, т.е. по факту тебе дают возможность только косьюмера

Viacheslav
Т.е. то что кинешь в канал, то и придет потребител...

а канал разве знает сколько данных? также могу байтики засылать из того tcp. и также вроде гарантия доставки так как все в 1 приложение

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
16
или вы считаете муит дает знание?
супер_лох_3000 альфа версия
12
А кто такой мужчина в твоем понимании Азиз?
who?です 🐈
11
Ну значит тебе повезло, мы же про транк говорим оба?
Александр (Rouse_) Багель
11
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Карта сайта