web-dev-qa-db-fra.com

Définition de "primitive de synchronisation"

Que signifie exactement le terme synchronisation primitive? Par exemple: Mutex, section critique, minuterie d'attente, événement, moniteur, variable conditionnelle, sémaphore. Sont tous des primitives de synchronisation? Y a-t-il d'autres primitives de synchronisation que je n'ai pas répertoriées? Et sont-ils une question valide?

29
Loom

Les primitives de synchronisation sont des mécanismes logiciels simples fournis par une plate-forme (par exemple système d'exploitation) à ses utilisateurs afin de soutenir la synchronisation du thread ou du processus. Ils sont généralement construits en utilisant des mécanismes de niveau inférieur (par exemple, des opérations atomiques, des barrières de mémoire, des spinlocks, des commutateurs de contexte, etc.).

Mutex, événement, variables conditionnelles et semi -aphores sont toutes des primitives de synchronisation. Ainsi sont des verrous partagés et exclusifs. Le moniteur est généralement considéré comme un outil de synchronisation de haut niveau. C'est un objet qui garantit une exclusion mutuelle pour ses méthodes utilisant d'autres primitives de synchronisation (généralement des verrous exclusifs avec des variables de condition pour supporter l'attente et la signalisation). Dans certains contextes lorsque le moniteur est utilisé comme élément de construction, il est également considéré comme une primitive de synchronisation.

La section critique n'est pas une primitive de synchronisation. Cela fait partie d'un chemin d'exécution qui doit être protégé de l'exécution simultanée afin de maintenir certains invariants. Vous devez utiliser des primitives de synchronisation pour protéger la section critique.

38
Adam Zalcman

Comme suggéré par @loom, j'ajoute cette liste , proposée par l'Université Colombie, comme réponse à votre question.

Découvrez également Cet article de Microsoft, daté du 03/2017 (j'ai le sentiment que c'est plus âgé, mais l'article de la Colombie de l'Université).

D'après ce que j'ai rassemblé, les primitives de synchronisation ne sont pas bien définies, en ce sens qu'il n'y a pas une liste officielle d'entre eux.

5
zook2005