Seu post tem boas intenções e acerta em cheio ao dizer que "as coisas são mais complicadas na vida real", mas a maior parte das explicações está simplesmente equivocada ou simplificada demais.
Por exemplo a ideia que de dividir um problema CPU bound em mais thread o deixaria mais rápido por que o processo teria mais vruntime, um benchmark simples mostrou que não para de pé.
Obrigado por tentar contribuir com a qualidade do conteúdo, mas a correção apresentada não está corrigindo algo que realmente está escrito no texto do post.
O que realmente está escrito é uma demonstração bem simples (porém suficiente para compreensão da informação) do porque a percepção de que adicionar mais uma threads divide a capacidade da CPU em partes iguais para as duas threads não está correta. O que eu demonstro mencionando o fato de que na vida real a CPU não está 100% dedicada há um único software mas sim a centenas ou até milhares deles.
E para demonstrar como realmente mais uma thread não "divide pela metade" (N/2
) eu fiz aquela explicação de que não é N/1 -> N/2
mas sim 1/N -> 2/(N+1)
quando você muda de uma thread para duas.
De forma alguma está escrito no texto que isso necessariamente se converte em um software mais rápido. Está claro no texto que isso não é verdade em todo caso e, inclusive, explica em qual caso usar threads prejudica a performance.
Também está claro no texto que existem outros fatores que precisam ser levados em consideração, como o fato do kernel diminuir a prioridade de threads que estejam usando muita CPU.