afficher >><< masquer ]
SAMPI - Editeur structuré
1. Le Problème et la Proposition
2. Le Langage Primitif de Représentation Textuelle
2.1. Présentation de la Syntaxe Concrète
2.2. Notations
2.3. Exemple de structuration des données
2.4. Exemple de structuration des traitements
2.4.1. La pile
2.4.2. Les lecteurs-écrivains
2.4.22.1. La spécification du problème
2.4.22.2. La réalisation du problème
2.4.22.3. La spécification des ressources doubles
2.4.22.4. La réalisation des ressources doubles
2.4.3. La racine carrée
2.5. Exemple de structurations connexes
3. Le Langage Complété pour la Structuration des Textes
3.1. Présentation de la Syntaxe Complétée
3.2. Etude quantitative de l'évolution des programmes
3.3. L'édition syntaxique
3.4. étude de cas : le langage LTR3 et l'atelier ENTREPRISE
4. L'Enrichissement du Langage par de Nouveaux Concepts
4.1. Présentation de la Syntaxe Abstraite
4.2. Les difficultés
4.3. Compléter la Syntaxe
5. La Formalisation des Solutions Techniques
5.1. L'évaluation fonctionnelle
5.2. La structuration par les objets
5.3. Modèle sémantique comparé de l'évaluateur
5.4. Comparaison critique
5.5. Construction de la Syntaxe Abstraite
6. Les Comparaisons avec d'autres Approches
7. Les Perspectives
8. Les Editeurs
8.0. brisé sur la barrière de la complexité (une fois de plus)
8.1. L'éditeur ligne : Manuel de l'utilisateur
8.2. L'éditeur page : Guide de l'utilisateur
9. Les Aspects d'Implantation
9.1. Contexte d'évaluation
9.2. La Syntaxe Abstraite : Manuel du concepteur
9.3. L'éditeur page : Guide de l'implanteur
Références
Rubrique Perl-Javascript

Les lecteurs-écrivains

Après « l'exemple d'école » des Types Abstraits de données : la pile, on présente « l'exemple d'école » du parallélisme : il s'agit de l'exemple des lecteurs-écrivains, qu'on traite ici avec une priorité égale pour les lecteurs et les écrivains.

1. La spécification du problème

2. La réalisation du problème

3. La spécification des ressources doubles

4. La réalisation des ressources doubles

2. La réalisation du problème

Le schéma qui spécifie le comportement du module des lecteurs-écrivains peut se construire par des traitements séquentiels, la synchronisation se faisant par des objets communs – ici les ressources doubles R_ecr et R_lect. Le module peut donc être réalisé assez simplement.

Interface des lecteurs-écrivains

INTERFACE OF lecteurs-écrivains;

   PROCEDURE Initialiser;
   PROCEDURE E_reserve;
   PROCEDURE L_reserve;
   PROCEDURE E_free;
   PROCEDURE L_free;

END INTERFACE;

Corps des lecteurs-écrivains

BODY OF lecteurs-écrivains;
   USE ressources-doubles;
   VAR R_ecr,R_lect : ressource-double;

   PROCEDURE Initialiser;
   BEGIN
      Initialiser( R_ecr, 1, 1 );
      Initialiser( R_lect, 10000, 1 ); % 10000 = ∞
   END;

   PROCEDURE E_reserve;
   BEGIN
      reserve(R_ecr);
      test(R_lect);
   END;

   PROCEDURE L_reserve;
   BEGIN
      test(R_ecr);
      reserve(R_lect);
   END;

   PROCEDURE E_free;
   BEGIN
      free(R_ecr);
   END;

   PROCEDURE L_free;
   BEGIN
      free(R_lect);
   END;

END BODY;

Interface des ressources doubles

INTERFACE OF ressources-doubles;

   TYPE ressource-double;
   PROCEDURE Initialiser( R:INOUT ressource-double;
                          max_reserve,max_free:IN integer );
   PROCEDURE reserve( R:INOUT ressource-double );
   PROCEDURE test( R:INOUT ressource-double );
   PROCEDURE free( R:INOUT ressource-double );

END INTERFACE;