Je pense que cette réponse est plus correcte que les réponses existantes et leur édition en aurait changé l’essence. J'ai essayé de créer des liens vers diverses sources ou pages wikipedia afin que d'autres puissent affirmer leur exactitude.
Concurrence: propriété d'un système permettant à des unités du programme, de l'algorithme ou du problème d'être exécutées dans le désordre ou dans un ordre partiel sans affecter le résultat final 1 2 .
Un exemple simple est celui des ajouts consécutifs:
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45
En raison de la propriété d'addition commutative, l'ordre de ceux-ci peut être réorganisé sans affecter la correction; la disposition suivante donnera la même réponse:
(1 + 9) + (2 + 8) + (3 + 7) + (4 + 6) + 5 + 0 = 45
Ici, j'ai regroupé les nombres en paires qui totalisent 10, ce qui me permet d’arriver plus facilement à la bonne réponse dans ma tête.
Calcul parallèle: type de calcul dans lequel de nombreux calculs ou l'exécution de processus sont effectués simultanément 3 4 . Ainsi, le calcul parallèle exploite la propriété de simultanéité pour exécuter simultanément plusieurs unités du programme, de l'algorithme ou du problème.
En reprenant l'exemple des additions consécutives, nous pouvons exécuter différentes parties de la somme en parallèle:
Execution unit 1: 0 + 1 + 2 + 3 + 4 = 10
Execution unit 2: 5 + 6 + 7 + 8 + 9 = 35
Puis, à la fin, nous additionnons les résultats de chaque travailleur 10 + 35 = 45
.
Encore une fois, ce parallélisme n’était possible que parce que des additions consécutives ont la propriété de simultanéité.
Cependant, la concurrence peut être exploitée par plus que le simple parallélisme. Envisagez la préemption sur un système monocœur: sur une période donnée, le système peut progresser sur plusieurs processus en cours d'exécution sans qu'aucun d'entre eux ne se termine. En effet, votre exemple d’E / S asynchrones est un exemple courant de concurrence ne nécessitant pas de parallélisme.
Confusion
Ce qui précède est relativement simple. Je soupçonne que les gens se perdent parce que les définitions du dictionnaire ne correspondent pas nécessairement à ce qui a été décrit précédemment:
- Concurrent: survenant ou existant simultanément ou côte à côte 5 .
- Accès simultané: le fait que deux événements ou plus ou plusieurs événements ou circonstances se produisent ou existent en même temps De la recherche sur Google: "define: accès simultané" .
Le dictionnaire définit la "simultanéité" comme une réalité, alors que la définition dans le langage informatique est une propriété latente d'un programme, d'une propriété ou d'un système. Bien que liées, ces choses ne sont pas les mêmes.
Recommandations personnelles
Je recommande d'utiliser le terme "parallèle" lorsque l'exécution simultanée est assurée ou attendue, et d'utiliser le terme "simultané" lorsqu'il est incertain ou sans importance que l'exécution simultanée soit utilisée.
Je décrirais donc la simulation d’un moteur à réaction sur plusieurs cœurs en parallèle.
Je décrirais les Makefiles comme un exemple de concurrence. Les Makefiles indiquent les dépendances de chaque cible. Lorsque les cibles dépendent d'autres cibles, cela crée un classement partiel. Lorsque les relations et les recettes sont définies de manière complète et correcte, ceci établit la propriété de concurrence: il existe un ordre partiel tel que l’ordre de certaines tâches puisse être réorganisé sans affecter le résultat. Encore une fois, cette concurrence peut être exploitée pour créer plusieurs règles simultanément mais la concurrence est une propriété du Makefile, que le parallélisme soit utilisé ou non.