Ответ 1
Ага, да... опасности "Мы должны сделать больше этого", не объясняя, что делают каждый из них и в каких обстоятельствах вы их будете использовать. Для чего-то вроде delayed_job
вы даже можете использовать fork
, не зная, что используете fork
. Тем не менее, это действительно неважно. Райан говорил об использовании fork
для предпродажных серверов. delayed_job
использовал бы fork
для превращения процесса в демона. Такой же системный вызов, разные цели. Выполнение delayed_job
на переднем плане (без fork
) и в фоновом режиме (с помощью fork
) приведет к незначительной разнице в производительности.
Однако, если вы пишете сервер, который принимает параллельные соединения, теперь совет Райана стоит на деньги.
-
fork
: создает копию исходного процесса -
execve
: прекращает выполнение текущего файла и начинает выполнение нового файла в том же процессе (очень полезно в задачах rake) -
pipe
: создает канал (два дескриптора файла, один для чтения, один для записи) -
socketpair
: как труба, но для сокетов -
select
: позволяет подождать, пока один или несколько из нескольких дескрипторов файлов будут готовы с таймаутом -
kill
: используется для отправки сигнала процессу -
sigaction
: позволяет вам изменять то, что происходит, когда процесс получает сигнал