O .NET 4 inclui um novo namespace, System.Threading.Tasks, que contém classes que abstraem a funcionalidade de threading. Use o ThreadPool em segundo plano. Uma tarefa representa o trabalho de uma unidade que deve ser concluída. O trabalho dessa unidade pode ser executado em uma thread separada ou uma tarefa pode ser iniciada sincronizadamente, o que requer esperar pela thread principal de sintonia. Usar tarefas não só te dá uma camada de abstração, mas também muito controle sobre os threads subjacentes. As tarefas oferecem muita flexibilidade na hora de agendar o trabalho que precisa ser feito. Por exemplo, você pode definir uma tarefa contínua – qual trabalho deve ser feito após a conclusão de uma tarefa. Isso pode fazer a diferença entre uma tarefa bem-sucedida e não. Além disso, as tarefas podem ser organizadas em uma hierarquia. Por exemplo, uma tarefa pai pode criar uma nova tarefa filha. Isso cria uma dependência para que, se você cancelar a tarefa pai, sua tarefa filha também será cancelada.
Hoje em dia, é comum usar métodos de execução de tarefas, e é de alto desempenho, e eu não sei onde está o desempenho das tarefas.
Eu mesmo testei Task and Thread, e sinto que Task é muito lento, o que afeta muito o desempenho, e o código de teste é o seguinte:
Passamos pelo método 1000 vezes, e então o método bloqueia por 100 milissegundos, e o resultado do teste é o seguinte:
Resultado:
A execução da thread leva 188 milissegundos
A execução da tarefa leva 14.671 milissegundos
A diferença de velocidade entre os dois é de 78 vezes!!
A tarefa está muito lenta, não sei por que isso está acontecendo, tem algo errado com meu código de teste, ou o quê? Espero que você consiga explicar por que isso acontece...
|