desempenho - aplicativos multithreaded ou multiprocess

Para desenvolver um aplicativo de servidor altamente intensivo em rede no linux, que tipo de arquitetura é preferido? A ideia é que esse aplicativo normalmente seja executado em máquinas com vários núcleos (virtuais ou físicos). Considerando que o desempenho é o critério principal, é melhor optar por um aplicativo de vários segmentos ou aquele com design de vários processos? Eu sei que o compartilhamento de recursos e sincronização para acessar esses recursos a partir de múltiplos processos é um monte de sobrecarga de programação, mas como mencionado anteriormente, o desempenho geral é o principal requisito e, portanto, podemos ignorar essas coisas. E a linguagem de programação seria C / C ++.

Ouvi dizer que até mesmo os aplicativos multiencadeados (processo único) podem aproveitar vários núcleos e executar cada encadeamento em um núcleo diferente independentemente (desde que não haja problemas de sincronização). E esse agendamento é feito pelo kernel. Em caso afirmativo, não há muita diferença no desempenho entre aplicativos multiencadeados e aplicativos de vários processos? O Nginx usa uma arquitetura multiprocessos e é realmente rápido, mas pode-se obter o mesmo desempenho com aplicativos multiencadeados?

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion