
Como posso descobrir o número máximo de threads que posso usar? Sou novo em programação, então estou tentando descobrir o que preciso saber. Tenho 950 GB de arquivos para baixar do Amazon S3. Eu estava pensando que poderia usar dois threads, cada um baixando metade dessa quantidade, rodando em paralelo.
Espero acelerar o download de dados em massa do Amazon S3 fazendo multithreading em meu aplicativo, mas seria bom primeiro saber se meu computador oferece suporte a multithreading.
Especificações do computador:
- Modelo: MacBook (13 polegadas, meados de 2010, A1342)
- Processador:Intel® Core Duo de 2,4 GHz
- Memória: 8 GB DDR3 1067 MHz
- Programas: MacOS Sierra 10.12.6
O processador é muito antigo e foi descontinuado, por isso não suporta hiperthreading Intel. Não tenho certeza se é bom com multithreading. Mas se ele puder suportar multithreading, quantos threads ele poderá suportar e haveria um impacto no desempenho se eu usar muitos threads?
Por favor, corrija-me se eu estiver errado, mas eu li issoum núcleo não-hyperthreading pode suportar apenas 1 thread, então estou pensando que talvez meu processador possa suportar até 2 threads, então mais threads depois disso teriam um efeito insignificante.
Responder1
Existem várias suposições falsas em sua pergunta, então deixe-me esclarecer aqui:
- Multithreading é possível mesmo em CPUs de núcleo único.A execução apenas se divide no tempo para que você tenha 1 thread ativo em um determinado momento, porém a execução geral dos threads é paralela.
- Multithreading não é equivalente a aceleração.Se projetado ingenuamente, o aplicativo multithreading é sempre mais lento que o aplicativo single-threaded dezenas ou até centenas de vezes.
- O download de redes externas em 99% dos casos não depende de multithreading.Pode valer a pena dar uma olhada no download HTTP de vários intervalos, como foi implementado em aplicativos como NetAnts, ReGet e outros da era do modem dial-up. No entanto, não há garantia de que o download em vários intervalos possa ser mais rápido do que o normal, devido a várias políticas de rede e servidores envolvidos.
Então, afinal. Definitivamente, você precisa coletar métricas em seu aplicativo: Qual é a operação mais lenta? E então redesenhe-o para obter mais velocidade.
Responder2
Como posso descobrir o número máximo de threads que posso usar?
O Intel Core Duo possui 2 threads devido ao fato de ter um processador de 2 núcleos de thread único. Cada núcleo tem a capacidade de um único thread.
Mas se ele puder suportar multithreading, quantos threads ele poderá suportar e haveria um impacto no desempenho se eu usar muitos threads?
Suporta 2 threads.
então estou pensando que talvez meu processador possa suportar até 2 threads, então mais threads depois disso teriam um efeito insignificante.
É incapaz de lidar com mais de 2 threads. Seu aplicativo multithread teria apenas dois threads, pois você só pode gerar 2 threads devido ao hardware.