Acredito que esta resposta seja mais correta do que as respostas existentes e editá-las mudaria sua essência. Tentei fazer o link para várias fontes ou páginas da Wikipedia, para que outras pessoas possam afirmar a correção.
Concorrência: a propriedade de um sistema que permite que unidades do programa, algoritmo ou problema sejam executadas 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 às propriedades comutativas da adição, a ordem delas pode ser reorganizada sem afetar a correção; a seguinte organização resultará na mesma resposta:
(1 + 9) + (2 + 8) + (3 + 7) + (4 + 6) + 5 + 0 = 45
Aqui, agrupei os números em pares que somam 10, facilitando a obtenção da resposta correta em minha cabeça.
Computação Paralela: um tipo de computação em que 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 a obter 10 + 35 = 45
.
Novamente, esse paralelismo só foi possível porque adições consecutivas têm a propriedade de simultaneidade.
A simultaneidade pode ser aproveitada por mais do que apenas paralelismo. Considere a preferência em um sistema de núcleo único: por um período de tempo, o sistema pode progredir em vários processos em execução sem que nenhum deles seja concluído. De fato, seu exemplo de E / S assíncrona é um exemplo comum de simultaneidade que não requer paralelismo.
Confusão
O exposto acima é relativamente direto. Eu suspeito que as pessoas ficam confusas 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 .
- Simultaneidade: o fato de dois ou mais eventos ou circunstâncias acontecerem ou existirem ao mesmo tempo. Na pesquisa no google: "define: simultaneidade" .
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 relacionadas, essas coisas não são as mesmas.
Recomendações pessoais
Eu recomendo usar o termo "paralelo" quando a execução simultânea for garantida ou esperada e usar o termo "simultâneo" quando for incerto ou irrelevante se a execução simultânea será empregada.
Portanto, eu descreveria a simulação de um mecanismo a jato em múltiplos núcleos como paralelo.
Eu descreveria Makefiles como um exemplo de simultaneidade. Makefiles indicam as dependências de cada destino. Quando os destinos dependem de outros, isso cria uma ordem parcial. Quando os relacionamentos e as receitas são definidos de forma abrangente e correta, isso estabelece a propriedade da simultaneidade: existe uma ordem parcial para que a ordem de determinadas tarefas possa ser reorganizada sem afetar o resultado. Novamente, essa simultaneidade pode ser aproveitada para criar várias regras simultaneamente, mas a simultaneidade é uma propriedade do Makefile, independentemente de o paralelismo ser empregado ou não.