Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 26065|Resposta: 2

[Fonte] Uma breve análise do uso do pool de threads .net/C# ThreadPool

[Copiar link]
Publicado em 21/06/2017 09:43:20 | | | |
O que é um pool de threads? Por que usar pools de threads? Como usar pools de threads?

1. O que é um pool de fios?

        A classe ThreadPool do .NET Framework fornece um pool de threads que pode ser usado para executar tarefas, enviar itens de trabalho, lidar com E/S assíncronas, esperar em nome de outras threads e gerenciar temporizadores. Então, o que é um pool de threads? O pool de threads é, na verdade, um "pool" que armazena objetos de threads e fornece alguns métodos básicos, como definir o número mínimo/máximo de threads no pool, enfileirar os métodos a serem executados, etc. ThreadPool é uma classe estática, então pode ser usada diretamente sem criar objetos.

2. Por que usar pools de threads? Quais são os benefícios?

        O site oficial da Microsoft diz o seguinte: Muitos aplicativos criam um grande número de threads que estão em espera, esperando que eventos ocorram. Também há muitos tópicos que podem entrar em hibernação só para acordar periodicamente e consultar informações de estado alteradas ou atualizadas. Pools de threads, permitindo que você use threads de forma mais eficiente através de um pool de threads de trabalho gerenciado pelo sistema.

        Simplificando, cada nova thread precisa ocupar espaço de memória e outros recursos, e com tantas threads novas, muitas delas estão dormentes ou esperando que recursos sejam liberados. Existem muitas threads que fazem apenas um pequeno trabalho periodicamente, como atualizar dados, etc., que são muito desperdiçadores para serem desenhados, e é raro que um grande número de threads surja em programação real e termine em um curto período de tempo. Portanto, foi proposto o conceito de pools de threads. Se a aplicação fizer outra requisição para o pool de threads, a thread no estado pendente é ativada e executa a tarefa sem criar uma nova thread, o que economiza muito sobretrabalho. O sistema destruirá automaticamente as threads apenas quando o número de threads atingir o número máximo de threads. Portanto, usar pools de threads pode evitar grandes custos de criação e destruição, ter melhor desempenho e estabilidade e, em segundo lugar, os desenvolvedores podem focar em outras tarefas ao transferir as threads para a gestão do sistema.


3. Como uso pools de threads?

Na verdade, os pools de threads são muito simples de usar, da seguinte forma

a. Defina o máximo e o pool mínimo de threads:

ThreadPool.SetMaxThreads (int workerThreads,int completionPortThreads)
Defina o número de solicitações para um pool de threads que podem estar ativos ao mesmo tempo. Todas as solicitações maiores que esse número permanecerão em fila até que a thread pool fique disponível. Você também pode definir o número mínimo de threads.

b. Adicionar tarefas ao pool de threads:

ThreadPool.QueueUserWorkItem (novo WaitCallback(nome do método));

ou
ThreadPool.QueueUserWorkItem (novo WaitCallback(nome do método), parâmetro);

Por exemplo, se um máximo de 5 threads no pool de threads executa um método 60 vezes, o salário total para 5 anos é o seguinte:



Se você não usar pooling de threads, pode ser necessário abrir 60 threads para executar o método Run() de forma assíncrona, o que é um desperdício de recursos de espaço. Agora usamos até 5 threads, que podem ser executados em 1 segundo, e a eficiência e o desempenho são muito bons.





Anterior:Código de tela cheia do mapa Baidu (código de tela cheia do div)
Próximo:Aviso ilegal de bloqueio de URL do Alibaba Cloud para processamento de acesso
 Senhorio| Publicado em 21/06/2017 09:47:12 |

Os pools de threads têm essas vantagens:

1. No multithreading, o pool de threads pode reduzir o número de threads que criamos e reutilizar razoavelmente as threads no pool de threads. Porque threads com threads no pool de threads estão em estado de espera para serem atribuídos.

2. Não há necessidade de gerenciar e manter threads com vidas curtas, nem alocar recursos a eles quando são criados, e liberar recursos após a conclusão de suas tarefas.

3. O pool de threads otimizará as threads do pool de acordo com as características atuais do sistema.

Desvantagens dos pools de threads:

Depois de entregarmos a tarefa para o pool de threads para completar, não podemos controlar a prioridade da thread, definir alguns nomes das threads e outras informações. [Mas podemos adicionar uma camada para refinar antes de colocar no pool de threads]

Publicado em 06/12/2017 11:28:49 |
Marque primeiro, para que você possa aprender depois
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com