Diferença chave : Thread e Process são dois termos intimamente relacionados em multi-threading. A principal diferença entre os dois termos é que os encadeamentos são parte de um processo, ou seja, um processo pode conter um ou mais encadeamentos, mas um encadeamento não pode conter um processo.
Na programação, existem duas unidades básicas de execução: processos e threads. Ambos executam uma série de instruções. Ambos são iniciados por um programa ou pelo sistema operacional. Este artigo ajuda a diferenciar as duas unidades.
Um processo tem um ambiente de execução independente. Ele possui um conjunto completo de recursos de tempo de execução básicos privados; em particular, cada processo tem seu próprio espaço de memória. Os processos geralmente são considerados semelhantes a outros programas ou aplicativos. No entanto, a execução de um único aplicativo pode, na verdade, ser um conjunto de processos cooperativos. Para facilitar a comunicação entre os processos, a maioria dos sistemas operacionais usa recursos de Inter Process Communication (IPC), como pipes e soquetes. Os recursos do IPC também podem ser usados para comunicação entre processos em diferentes sistemas. A maioria dos aplicativos em uma máquina virtual é executada como um único processo. No entanto, ele pode criar processos adicionais usando um objeto do construtor de processos.
Nos computadores, um thread pode executar até mesmo a menor seqüência de instruções programadas que podem ser gerenciadas independentemente por um sistema operacional. As aplicações de threads e processos diferem de um sistema operacional para outro. No entanto, os threads são feitos e existem dentro de um processo; Todo processo tem pelo menos um. Vários encadeamentos também podem existir em um processo e compartilhar recursos, o que ajuda na comunicação eficiente entre encadeamentos.
Em um único processador, a multitarefa ocorre quando o processador alterna entre diferentes threads; é conhecido como multithreading. A comutação acontece com tanta frequência que os segmentos ou tarefas são percebidos como sendo executados ao mesmo tempo. Os threads podem ser verdadeiramente concorrentes em um sistema multiprocessador ou multi-core, com cada processador ou núcleo executando os threads separados simultaneamente.
Em resumo, os encadeamentos podem ser considerados processos leves, pois contêm conjuntos simples de instruções e podem ser executados em um processo maior. Os computadores podem executar vários threads e processos ao mesmo tempo.
Comparação entre processo e segmento:
Processo | Fio | |
Definição | Uma instância em execução de um programa é chamada de processo. | Um thread é um subconjunto do processo. |
Processo | Tem sua própria cópia do segmento de dados do processo pai. | Tem acesso direto ao segmento de dados de seu processo. |
Comunicação | Os processos devem usar comunicação entre processos para se comunicar com processos irmãos. | Os segmentos podem se comunicar diretamente com outros segmentos de seu processo. |
Despesas gerais | Processos têm sobrecarga considerável. | Tópicos quase não têm sobrecarga. |
Criação | Novos processos requerem duplicação do processo pai. | Novos tópicos são facilmente criados. |
Ao controle | Processos só podem exercer controle sobre processos filhos. | Os threads podem exercer controle considerável sobre threads do mesmo processo. |
Alterar | Qualquer alteração no processo pai não afeta os processos filhos. | Qualquer alteração no thread principal pode afetar o comportamento dos outros threads do processo. |
Memória | Execute em espaços de memória separados. | Executar em espaços de memória compartilhada. |
Descritores de arquivos | A maioria dos descritores de arquivos não é compartilhada. | Ele compartilha descritores de arquivos. |
Sistema de arquivo | Não há compartilhamento de contexto do sistema de arquivos. | Compartilha o contexto do sistema de arquivos. |
Sinal | Não compartilha o tratamento de sinal. | Ele compartilha o tratamento do sinal. |
Controlado por | O processo é controlado pelo sistema operacional. | Threads são controlados pelo programador em um programa. |
Dependência | Processos são independentes. | Threads são dependentes. |