Outra grande utilização é para threads que necessitam altíssima performance com cálculos matématicos. O motivo que venho a escrever este artigo, é para alertar a todos do mal uso de Threads. Vejo uma série de práticas mal formuladas e gostaria de compartilhar com vocês algumas dicas. Lembrando que estas dicas são mais voltadas a plataformas Desktop e servem para qualquer programador que faz target a windows e usa suas API’s, seja programado em delphi, vb, c, c++, java, c# etc..
- Evite criar Threads sem motivos aparentes. Um programa com um número alto de threads sobrecarrega o escalonador que ficará mais tempo trocando a linha de execução do que realizando o processamento propriamente dito;
- Evite de mudar a prioridade da threads. Isso é tarefa do sistema operacional, é ele que deve ditar o time slice de processamento. Com raras exceções, troque a prioridade da thread, mas depois retorna a sua opção default;
- Evite usar objetos Kernel (Mutex, Semaphore), com exceção da necessidade de uso de cross-processing messages, ou seja, quando as threads precisam conversar entre processos diferentes. (Lembrando que as threads são criadas “dentro” dos processos e que compartilham a pilha de memória, mas não conversam entre processos, a não ser que Kernel Objects sejam usados);
- Evite o uso de Foreground Threads. OH MY GOD, WHAT THE HELL IS THAT?! Foreground threads são as threads que continuam a executar quando a “main” thread termina. Um exemplo claro disso é o Outlook, que continua a rodar a thread de organizar a agenda mesmo quando o programa é fechado. Uma alternativa para isto é utilizar background threads, que finalizam a execução assim que a main thread termina. Exemplo: Spell-Checker do Word, que realmente não faz sentido continuar a execução após o usuário fechar o winword.exe.
