Acredito que esta resposta seja mais correta do que as respostas existentes e editá-las teria mudado sua essência. Tentei vincular várias fontes ou páginas da Wikipédia para que outras pessoas possam afirmar a exatidão.
Concorrência: a propriedade de um sistema que permite que unidades do programa, algoritmo ou problema sejam executados fora de ordem ou em ordem parcial sem afetar o resultado final 1 2 .
Um exemplo simples disso são adições consecutivas:
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45
Devido à propriedade comutativa da adição, a ordem destes pode ser reorganizada sem afetar a correção; o seguinte arranjo resultará na mesma resposta:
(1 + 9) + (2 + 8) + (3 + 7) + (4 + 6) + 5 + 0 = 45
Aqui eu agrupei os números em pares, que somariam 10, tornando mais fácil para mim chegar à resposta correta na minha cabeça.
Computação Paralela: um tipo de cálculo no qual muitos cálculos ou a execução de processos são realizados simultaneamente 3 4 . Assim, a computação paralela aproveita a propriedade da simultaneidade para executar várias unidades do programa, algoritmo ou problema simultaneamente.
Continuando com o exemplo de adições consecutivas, podemos executar diferentes partes da soma em paralelo:
Execution unit 1: 0 + 1 + 2 + 3 + 4 = 10
Execution unit 2: 5 + 6 + 7 + 8 + 9 = 35
Então, no final, somamos os resultados de cada trabalhador para obter 10 + 35 = 45
.
Novamente, esse paralelismo só foi possível porque acréscimos consecutivos têm a propriedade de concorrência.
A concorrência pode ser alavancada por mais do que apenas paralelismo. Considere a
preempção em um sistema de núcleo único: durante um período de tempo, o sistema pode progredir em vários executando processos sem que nenhum deles termine. De fato, seu exemplo de E / S assíncronos é um exemplo comum de simultaneidade que não requer paralelismo.
Confusão
O acima é relativamente simples. Suspeito que as pessoas se confundem porque as definições do dicionário não correspondem necessariamente ao que foi descrito acima:
- Concorrente: ocorrendo ou existindo simultaneamente ou lado a lado 5 .
- Concorrência: o fato de dois ou mais eventos ou circunstâncias acontecerem ou existirem ao mesmo tempo Da pesquisa no google: "define: concorrência" .
O dicionário define "simultaneidade" como um fato de ocorrência, enquanto a definição no vernáculo de computação é uma propriedade latente de um programa, propriedade ou sistema. Embora relacionados, essas coisas não são as mesmas.
Recomendações pessoais
Eu recomendo usar o termo "paralelo" quando a execução simultânea for assegurada ou esperada, e usar o termo "concorrente" quando for incerto ou irrelevante se a execução simultânea for empregada.
Eu descreveria, portanto, simulando um motor a jato em múltiplos núcleos como paralelo.
Eu descreveria Makefiles como um exemplo de simultaneidade. Makefiles afirmam as dependências de cada destino. Quando os alvos dependem de outros alvos, isso cria uma ordenação parcial. Quando os relacionamentos e as receitas são definidos de forma abrangente e correta, isso estabelece a propriedade da concorrência: existe uma ordem parcial de modo que a ordem de certas tarefas possa ser reorganizada sem afetar o resultado. Novamente, essa simultaneidade pode ser aproveitada para construir múltiplas regras simultaneamente, mas a simultaneidade é uma propriedade do Makefile se o paralelismo é empregado ou não.