Cours d'art (application multithread)
Puisqu'il ne peut y avoir de classe sans professeur, vous avez besoin d'un professeur (fil conducteur). Lorsque vous arrivez en classe, vous vous asseyez et l'enseignant représente tout le monde et assigne la classe pour peindre des images pour la journée.
L'enseignant assigne tous les élèves de la journée pour commencer la peinture (initialisation et affectation du fil).
Parce que l'école n'a que peu de peintures, tout le monde devra partager ses couleurs (les peintures représentent la mémoire).
Disons que vous peignez un dragon et que vous voulez lui donner des yeux rouges fous, mais quelqu'un d'autre utilise la peinture rouge. Vous ne pouvez pas vous contenter de prendre la peinture par vous-même, car personne d'autre ne pourrait l'utiliser. Au lieu de cela, vous demandez poliment de partager (verrouillage des ressources) la peinture. Vous utilisez un peu, puis passez-le. Vous devrez peut-être attendre un peu pour le récupérer, mais cela permet à tous ceux qui en ont besoin d'en obtenir sans se battre (conditions de course).
À la fin de la classe, l'enseignant rejette la classe (jonction de fil).
Jeux (application multi-processus)
Jouer à un jeu de cartes avec des amis (ou un jeu équivalent avec des objets de collection):
Disons que vous vous réunissez avec vos amis (processus) après l'école. Il n'y a pas d'enseignant dans les parages, personne n'est là pour vous dire quoi faire.
Tout le monde est réuni pour jouer à des jeux (application multi-processus ou multi-couches).
Vous réfléchissez sérieusement à la façon dont vous pouvez utiliser vos cartes pour battre vos adversaires (traitement interne) et vous essayez de partager des idées avec votre partenaire lorsque vous proposez une idée (transmission de messages).
Si vous devenez vraiment bon, vous pouvez rejoindre un club:
Membres dirigeants (programme exécutif) (sous-programmes)
Si le club devient vraiment bon, ils peuvent trouver un moyen spécial (API) de communiquer entre eux pour mieux élaborer des stratégies.
J'ai choisi de ne pas mentionner plusieurs processeurs / cœurs ici parce que l'abstraction devient assez compliquée (et le changement de contexte est toujours transparent pour la plupart des applications). Je pourrais probablement commencer par dire que chaque équipe du jeu représente un processeur / noyau distinct et la plupart des jeux sont toujours nuls car ils ne permettent qu'à quelques équipes de jouer ensemble dans un jeu. L'avenir pourrait ressembler à un MMORPG où de nombreuses personnes peuvent jouer ensemble dans un jeu avec de nombreuses équipes différentes.
Essayer de développer une métaphore des enfants pour un système de traitement distributif sur un ordinateur à plusieurs cœurs ou sur un grand nombre de réseaux hôtes serait assez intéressant à jouer, mais ce n'est pas ce que l'Op a demandé.
Remarque:
Le message qui passe au-dessus est une référence aux nombreuses formes de communication que les programmes utilisent pour se parler. Comme les gens, les applications ont de nombreuses façons de se parler. L'écriture est comme le piping de données sérialisées, parler est comme le réseautage, chuchoter est comme le réseautage via une connexion cryptée, les bases de données sont comme une carte de score (structure finie avec des données bien définies), et utiliser MSMQ est comme taper du code morse en se cognant la tête contre un Surface solide.
La plupart des autres formes de communication au-delà de cela se brouillent trop pour que je puisse les considérer comme indiscernables.
De côté:
Si vous avez déjà joué à un jeu en ligne comme Halo, les personnes qui se joignent à des groupes (ou deviennent des joueurs professionnels) ont généralement un langage abrégé pour passer des appels afin de se diriger mutuellement où se trouvent les joueurs de l'autre équipe et ce qu'ils utilisent. C'est vraiment désagréable si vous ne connaissez pas les appels, mais c'est étonnamment efficace pendant le jeu.
Il est intéressant de voir comment, même si la plupart des gens qui vivent dans une culture donnée parlent une langue commune mais dans cette culture, les gens développent des langues de domaine succinctes plus courtes qui sont optimisées pour gérer des tâches spécifiques. En informatique, je comparerais cela à une API.