Совместно используемая память может обеспечить наибольшую пропускную способность среди всех доступных форм IPC, но это также является своего рода болью в управлении - вам нужно синхронизировать доступ к общей памяти, как это делается с потоками. Если вам действительно нужна эта необработанная полоса пропускания, это примерно лучшее, что есть, но проект с такой полосой пропускания часто бывает с плохо выбранной разделительной линией между процессами, в этом случае это может быть излишне сложно заставить его работать хорошо.
Также обратите внимание, что каналы (для одного примера) намного проще в использовании и все еще имеют довольно серьезную полосу пропускания - они все еще (обычно) используют выделенный ядром буфер в памяти, но они автоматизируют синхронизацию доступа к нему. Потеря пропускной способности связана с тем, что для автоматизации синхронизации требуется очень пессимистичный алгоритм блокировки. Это все еще не налагает огромные накладные расходы, хотя ...