- Eles serão todos executados ao mesmo tempo
- A carga será distribuída pelo seu sistema operacional para ser trabalhada em tantos núcleos quantos estiverem disponíveis. O horário pode não ser proporcional ao número de encadeamentos. Aqui está um exemplo bobo do porquê. Suponha que você tenha um trabalho que você queira fazer três vezes, e ele leva a mesma quantidade de tempo a cada vez (1 unidade de tempo). Você tem dois núcleos. Suponha que não há mais nada em execução.
- Caso 1: você tem apenas um segmento. Nesse caso, o encadeamento é executado em um núcleo e a coisa toda leva três unidades de tempo para ser concluída. Tempo total: 3
- Caso dois: você tem dois tópicos. Em uma unidade de tempo, o trabalho é executado duas vezes (uma vez por núcleo). Você então tem que esperar uma unidade inteira de tempo para que a terceira iteração seja concluída. Tempo total: 2
- Caso 3: você tem três tópicos. Seu sistema operacional tentará e tornará tudo justo, e assim dividirá o tempo de maneira uniforme entre os três processos. Até o final da unidade 1, NENHUM deles será concluído. Pela unidade 2, tudo será feito. (veja o caso acima). Tempo total: 2
Iniciar mais tópicos não afetará muito seu desempenho (o custo de iniciar um segmento é menor que 1 MB), mas também pode não ajudar.
A única maneira de saber o que seria mais rápido fazer é testá-lo, mas use as seguintes regras como guia: Use pelo menos o mesmo número de threads que você tem. Além disso, se o processo tiver muitos acessos à memória em todo o lugar, pode ser mais rápido ter mais threads do que núcleos (o acesso à memória é muito lento comparado à execução de outras instruções e o sistema operacional preencherá o tempo com a execução real de algo). outra coisa que não precisa esperar).