Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Quantidade de Threads

Boa tarde!

Como saber quantas Threads posso utilizar por aplicação?

Na vídeo aula entendi que usaríamos uma Thread para cada núcleo, porem fiz o exercício utilizando 10 Threads (uma para cada conta), sendo o meu processador um FX 6300 com 6 núcleos e 6 threads de acordo com suas especificações (Cores: 6 / Threads: 6).

Grato.

3 respostas
solução!

Leonardo, é complicado eu responder a sua resposta. Threads são micro serviços. Então o processador vai organizar os serviços por prioridade (ele julga oque é prioridade, separando em níveis ), então eu posso criar infinitas Threads e o processador vai executar 6 processos simultaneamente(no seu caso), mas vc tem que pensar também que existem outros processos além da sua aplicação, ou seja vai ter uma competição de prioridade, logo quanto mais Threads tiver maior vai ser essa competição e isso pode acabar deixando sua aplicação muito lenta (de forma que ela demore a responder, como quando seu computador para e o windows avisa que um tal programa não está respondendo ) ou até mesmo trava o servidor com um todo.Com isso posso dizer que a quantidade de Threads de ser feita de acordo com a sua infra( por exemplo eu tenho um I7 3° geração ele processa 7 Threads simultaneamente, mas se eu pegar um I5 6° geração ele vai executar um desempenho melhor do que o primeiro processador, porque ele consegue executar as Threads mais rápido ) e a necessidade de sua aplicação(quantos processos a aplicação precisa executar simultaneamente).

Oi Felipe,

Entendi, grato pela ajuda!

Abraço.

Leonardo,

Gostaria de complementar... a resposta do Filipe Souza se aplica bem a aplicações CPU Bound(uso intensivo de CPU). Contudo para aplicações I/O Bound(uso intensivo de operações de I/O) como disco, rede, download, etc... é recomendável utilizar mais threads do que o número de núcleos. Isso ocorre porque as threads ficam muito mais tempo dormindo do que executando e se vc tem muitas solicitações de recursos de I/O independentes é mais vantajoso solicitar o quanto antes. Mas não abuse, porque as threads são caras e se não balancear bem, como o Filipe falou sua aplicação pode ficar mais lenta.

Quanto à sua pergunta do número máximo de threads permitido... o sistema operacional define o número de threads máximo por processo. Em alguns contextos é possível aumentar/diminuir o número máximo de threads por processo a depender da permissão do usuário, etc...