Pour obtenir un Compilateur Multi-threadé sur de nombreux cœurs de calculs en parallèles les langages évolués de programmation font appel à des définitions au moment de la compilation qui sont situés dans différents modules, unités ou prototype différents que l'on à besoin parfois de recompiler intégralement pour obtenir d'un même code source plusieurs binaires différents selon la cible du processeur X32, X64, ARM pour les plus connues mais aussi PowerPC d'Ibm.
Ces modules sont soit indépendant soit interdépendant, et pour connaître le vocabulaire lexical d'un module ou d'une unité c'est pareil, le compilateur logiciel à besoin de le lire en mémoire vive pour agréer son vocabulaire qui est déjà mémorisé sur le disque et sortir un code binaire compatible avec un processeur donné, l'adresse d'un mot en mémoire est déterminé pendant la compilation.
Si un module à besoin de dépendre d'autre modules il suffirait de placer un verrou logiciel avec un sémaphore (lock) sur ces modules, puis lorsque la disponibilité des ces unités sont compilées alors passer la main logiciel à ce module qui pourrait alors lui aussi être recompilé à ce moment.
Quand la somme Σ de tous ces modules de la clause uses en Pascal ou #Include en C seraient égal à zéro module à compiler à ce moment, ceci pourrait être fait mais au préalable avec cette table des modules avoir lancer autant de tâches de recompilation pour chaque module.
Modula un langage informatique induit par https://en.wikipedia.org/wiki/Niklaus_Wirth
Partager