Вы не должны делать ничего специального: это - задание ядра для решения, какой поток продолжается, который ЦП, и это делает намного лучшее задание, чем человек мог.
Однако нет никакого смысла из наличия 24 центральных процессоров, если у Вас нет по крайней мере 24 параллельных потоков для выполнения. Программы волшебно не пойдут быстрее, если больше центральных процессоров будет доступно: только программы, которые кодируются, чтобы иметь несколько параллельных потоков, извлекут выгоду, и много программ не извлекут выгоду, не потому что они записаны нижним способом, но потому что то, что они делают, по сути не parallelizable.
Программа с параллельными потоками вычисления N извлечет выгоду из до центральных процессоров N (хотя она не могла бы пойти времена N быстрее, потому что синхронизация между потоками занимает время). Выполнение M различные программы, которые не взаимодействуют очень, если вообще так же использует в своих интересах центральные процессоры M (или больше, чем это, если программы являются многопоточными).
Существует несколько случаев, где ручное вмешательство необходимо для использования в своих интересах параллелизма. Если Вы запускаете несколько задач обработки данных, заботитесь, что они порождены параллельно (с немного по одной задаче на ЦП), а не один за другим. Например, при создании программного обеспечения, передайте -j
опция к make
. Посмотрите несколько других примеров и объяснений:
При выполнении веб-сервера все веб-серверы, разработанные для больших нагрузок, способны использовать параллелизм. Apache используется в качестве тестового сценария при оценке выполнения оптимизации в ядре Linux. Остерегайтесь однако, что параллелизм в ЦП только помогает, если нет никакого другого узкого места, такого как конкуренция из-за пропускной способности ввода - вывода или доступа к базе данных.
/dev/fd/0
является стандартным входом текущего процесса; tee
записывает его в файл(ы), который(ые) вы даете, и в stdout. Таким образом, tee
читает (пустую) строку, затем записывает эту строку как в stdout (sed
), так и в свой собственный вход, где читает только что написанную строку, записывает ее в stdout и свой собственный вход, и т.д., создавая бесконечный цикл из (пустых) строк*. Команда sed
просто печатает номер строки, а затем строку.
echo --> tee --> sed
^---+
* Когда предоставлено больше входных данных, чем просто echo
, эта команда будет перебирать входные данные, повторяя их снова и снова.
Примечание: OSX (BSD) не позволяет писать в /dev/fd/0
, так что вы не можете этого сделать.