LINUX.ORG.RU
Ответ на: комментарий от quantum-troll

Уже пробовал разобраться, не получилось. «ref p» говорит о передаче указателя, если отправлять число «1u8», то при выводе на экран к ответу нельзя будет прибавить «100000» - выход за границы u8. Но я все ещё не уверен, что работают эти каналы через передачу указателя, поэтому обратился сюда за помощью.

yeyijoz
() автор топика

Данные передаются по значению, значит какой-нибудь usize просто копируется в очередь, а что-нибудь сложнее вроде Vec перемещает только структуру с парой указателей, сами данные остаются лежать на том же месте в куче.

«ref p» говорит о передаче указателя

Нет, «ref p» это просто байдинг по ссылке а не по значению, не имеет отношения к указателям/ссылкам в структуре, которую мы матчим.

nonimous
()

Он отправляет данные подобно пайпам. Указатель - тоже данные.

tailgunner ★★★★★
()
Ответ на: комментарий от nonimous

Т.е. как не извращайся, но скорость передачи данных в обычном пайпе или же в этом mpsc никак не увеличить? Будет ли разница между 5 программами, работающими через конвейер, и 1 программой, в которой 5 нитей передают данные через mpsc?

yeyijoz
() автор топика
Ответ на: комментарий от yeyijoz

Т.е. как не извращайся, но скорость передачи данных в обычном пайпе или же в этом mpsc никак не увеличить?

Не понял о чем ты, всегда можно попробовать увеличить скорость передачи.

Будет ли разница между 5 программами, работающими через конвейер, и 1 программой, в которой 5 нитей передают данные через mpsc?

Конечно будет, пайп это буфер поддерживаемый ОС, чтение/запись приводит к копированию всех данных в/из память процесса. Потоки, передающие через mpsc, работают в одном адресном пространстве и передача нетривиальных данных вроде Vec или String выражается в копировании пары указателей.

nonimous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.