Entendo que um processo é uma unidade de propriedade de recursos e instruções executáveis. Os encadeamentos permitem que um processo compartilhe seus recursos com várias execuções, e é mais fácil para um SO agendar encadeamentos devido a toda a sobrecarga associada a processos inteiros.
Mas por que o segmento de nome ? Ele tem alguma referência a string ou a intercalação de execução? Mesmo assim, este não é um termo intuitivo na minha opinião.
Já viu como múltiplos fios, torcidos, formam um cordão mais grosso e forte?
Essa é a metáfora: todos os threads são independentes, mas todos os threads juntos colaboram para uma saída computacional final. Além disso, como no fio têxtil, um fio pode quebrar sem comprometer a estrutura de todo o cordão.
fonte
tl; dr: Eles são chamados de threads porque "thread" é uma metáfora adequada.
Ao iniciar um encadeamento, você depende do sistema operacional para alocar o tempo de processamento para que seu encadeamento possa ser executado. Enquanto o encadeamento estiver em execução, o processador (ou núcleo) está colocando toda a atenção no encadeamento. Quando o sistema operacional alterna o núcleo para um thread diferente, o thread pára de executar enquanto o outro thread está sendo atendido.
Então a execução salta por todo o lado. Mas a integridade do conjunto de instruções da máquina permanece intacta, apesar desses saltos, porque construímos cercas e mecanismos de concorrência para proteger seu estado e o estado dos objetos com os quais ele interage.
Portanto, o encadeamento se refere, não à execução de instruções em qualquer encadeamento específico, mas às instruções que eventualmente serão executadas no encadeamento que criamos. Cada encadeamento, em outras palavras, pode ser pensado como uma máquina ou agente individual (os chamamos de processos leves), sem ter que pensar em todas as alternâncias de contexto que o sistema operacional está executando para dar a aparência de que são todas. executando simultaneamente.
Em outras palavras, apesar de todo o salto que o SO faz nos bastidores, o que chamamos de thread (a sequência de operações que estamos executando em um processo leve) ainda pode ser pensado como a mesma sequência de operações, se não tivéssemos gerado o encadeamento, assumindo que tomamos as proteções de concorrência necessárias.
Se essa descrição parecer muito pesada e abstrata, pense em um tópico em um fórum, como o Reddit. Você pode ramificar novas discussões; cada discussão é seu próprio tópico. Você pode pular para frente e para trás entre os threads. Mas cada segmento ainda mantém sua integridade estrutural como uma conversa individual.
fonte
É difícil desvendar (trocadilho totalmente intencional) a fonte do termo "Fio", porque várias coisas lamam as águas.
O uso do encadeamento no fórum ou no senso de e-mail quase certamente decorre da frase "encadeamento de conversação", que, de acordo com isso, remonta a 1593.
As coisas parecem menos claras para o significado do encadeamento que você está perguntando, pois, de acordo com este link, os encadeamentos como os conhecemos não foram chamados de "encadeamentos" até os anos 70 ou possivelmente no início dos anos 80, apesar da implementação de um processo de memória compartilhada. na verdade, anteceder o que consideramos processos pesados hoje em dia. Dado que uma forma relacionada de multiprocessamento de memória compartilhada é chamada de "fibra", suspeito fortemente que a palavra "fio" seja uma reminiscência de tecido de tecelagem ou alguma outra analogia relacionada a têxteis.
fonte
Eu acho que tem a ver com um 'fio de raciocínio' ou 'fio de pensamento'.
Ao contrário de um processo, os threads compartilham memória. Portanto, se um processo é comparado com uma pessoa com sua própria mente (memória), um fio pode ser comparado com uma linha de pensamento dentro dessa mente.
fonte
Eu li em algum lugar a analogia das linhas na programação. Pense na CPU como uma agulha de costura e na linha como a string real. Agora, se você tiver várias agulhas de costura, mas apenas uma linha. Você não acha que será bastante ineficiente? A outra CPU / agulha de costura estará aguardando a linha estar disponível. No entanto, se tivermos vários encadeamentos, o trabalho poderá ser realizado em pouco tempo.
fonte