Можно ли управлять всеми потоками для конвейеров многопоточных команд?

Когда я набираю set | wc, результат составляет 9571 байт!

Если предположить, что вы правильно набрали это число, то на самом деле оно довольно маленькое, возможно, потому что вы используете QNX. На обычной настольной системе он гораздо больше. Вот что я получаю на fedora 20:

> set | wc --bytes
133195

133 кБ. Я не считал записи, так как многие из них являются функциями источника (git, похоже, устанавливает много таких функций), но я просмотрел их, и, похоже, ничего плохого там нет. Максимум несколько кБ - это мои собственные наработки.

Я беспокоюсь о том, что могу превысить какой-то внутренний предел и вызвать странное поведение ОС

Я очень сомневаюсь, что это возможно, потому что отсутствие проверки границ там указывало бы на очень существенную ошибку в реализации - предотвращение того, что кто-то может просто написать длинную переменную для ввода данных в память, должно было быть основной задачей. Кроме того, как вы говорите, 9 кБ - это ничто с точки зрения памяти. Я предполагаю, что поиск в них выполняется с помощью хэш-таблицы, так что количество записей не ухудшит производительность.

0
11.02.2019, 19:32
1 ответ

Судя по вашему примеру, управление потоками встроено прямо в инструменты, которые вы используете в своем конвейере.

Не имеет значения, сколько потоков использует ваш процесс, каждый процесс имеет ровно по одному стандартному вводу, выводу и ошибке. Все стандартные выходные данные tool1-, независимо от значения, предоставленного аргументу --threads--, будут отправлены на стандартный ввод tool2и так далее.

0
28.01.2020, 03:59

Теги

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