O que é Thread?

Por Redação
photo_camera Divulgação

Thread é um pequeno programa que trabalha como um subsistema, sendo uma forma de um processo se autodividir em duas ou mais tarefas. É o termo em inglês para Linha ou Encadeamento de Execução. Essas tarefas múltiplas podem ser executadas simultaneamente para rodar mais rápido do que um programa em um único bloco ou praticamente juntas, mas que são tão rápidas que parecem estar trabalhando em conjunto ao mesmo tempo.

Os diversos threads que existem em um programa podem trocar dados e informações entre si e compartilhar os mesmos recursos do sistema, incluindo o mesmo espaço de memória. Assim, um usuário pode utilizar uma funcionalidade do sistema enquanto outras linhas de execução estão trabalhando e realizando outros cálculos e operações. É como se um usuário virtual estivesse trabalhando de forma oculta no mesmo computador que você ao mesmo tempo.

Devido à maneira rápida que a mudança de uma thread e outra acontece, aparentemente é como se elas estivessem sendo executadas paralelamente de maneira simultânea em hardwares equipados com apenas uma CPU. Esses sistemas são chamados de monothread. Já para os hardwares que possuem mais de uma CPU, as threads são realmente feitas concorrencialmente e recebem o nome de multithread.

Os threads possuem vantagens e desvantagens ao dividir um programa em vários processos. Uma das vantagens é que isso facilita o desenvolvimento, visto que torna possível elaborar e criar o programa em módulos, experimentando-os isoladamente no lugar de escrever em um único bloco de código. Outro benefício dos threads é que eles não deixam o processo parado, pois quando um deles está aguardando um determinado dispositivo de entrada ou saída, ou ainda outro recurso do sistema, outro thread pode estar trabalhando.

No entanto, uma das desvantagens é que com vários threads o trabalho fica mais complexo, justamente por causa da interação que ocorre entre eles.

Um thread pode autoresponder-se sem que seja preciso duplicar um processo inteiro, economizando recursos como memória, processamento e aproveitando dispositivos de I/O, variáveis e outros meios. Também pode por conta própria abandonar a CPU por não ver a necessidade de continuar com o processamento proposto pela própria CPU ou pelo usuário. Isso é realizado por meio do método thread-yield. Um thread também pode realizar outras funções além das mencionadas, como aguardar outra thread sincronizar, por exemplo, entre outras.

Os sistemas operacionais executam de maneiras diferentes os processos e threads. No caso do Windows, ele trabalha com maior facilidade para gerenciar programas com apenas um processo e diversos threads do que quando gerencia vários processos e poucos threads. Isso acontece porque no sistema da Microsoft a demora para criar um processo e alterná-los é muito grande. Enquanto isso, o Linux e os demais sistemas baseados no Unix podem criar novos processos de maneira muito mais rápida. No entanto, ao serem alterados, os programas podem apresentar o mesmo desempenho tanto no Linux quanto no Windows.