Ответ 1
все действия, которые отправляются любому агенту с помощью send
, запускаются в пуле потоков с несколькими потоками, чем физическое число процессоров. это заставляет их работать ближе к полной загрузке процессора. если вы используете 1000 звонков с использованием send
, на самом деле вы не слишком много перераспределяете накладные расходы, вызовы, которые не могут быть немедленно обработаны, просто ждут выхода процессора. , если они блокируются, пул потоков может работать сухим.
когда вы используете send-off
, для каждого вызова создается новый поток. если вы send-off
1000 функций, те, которые не могут быть обработаны, до сих пор ждут следующего доступного процессора, но они могут повлечь дополнительные накладные расходы при запуске потока, если произойдет передача потока downpool для работы на низком уровне. это нормально, если потоки блокируют, потому что каждая задача (потенциально) получает выделенный поток.