### Problemo pri la mortemaj manĝantaj filozofoj

Ni donas ekzemplan solvon de tiu problemo en Ada (laù N. Gehani. Ada: An advanced introduction). Ĉiu pensisto estas mortema kaj forpasas baldaŭ post la centmila manĝado.

       PROCEDURE mangxado IS

         SUBTYPE n_ro IS INTEGER RANGE 1..5; -- identigas pensiston, forkon

         TASK TYPE pensisto IS
           ENTRY nomizo(j: n_ro);  --  por sciigi al la pensisto lian n-ron
         END pensisto;

         TASK TYPE forko IS
           ENTRY prenu; ENTRY remetu;
         END forko;

         ilo: ARRAY (n_ro) OF forko;
         ulo: ARRAY (n_ro) OF pensisto;

         TASK TYPE pasejo IS
           ENTRY enen; ENTRY elen;
         END pasejo;

         TASK BODY forko IS
         BEGIN
           LOOP
        SELECT
           ACCEPT prenu; ACCEPT remetu;
        OR TERMINATE;
        END SELECT;
           END LOOP;
         END forko;

         TASK BODY pasejo IS
           n: INTEGER := 0;
         BEGIN
           LOOP
        SELECT
           WHEN n<4 => ACCEPT enen; n:=n+1;
        OR ACCEPT elen; n:=n-1;
        OR TERMINATE;
        END SELECT;
           END LOOP;
         END pasejo;

         TASK BODY pensisto IS
           memo: n_ro;           -- sia nomo;
           morta_mangxo: CONSTANT := 100_000;
           mangxite: INTEGER := 0;
           liva, dekstra: n_ro;   -- forkoj;
         BEGIN
           ACCEPT nomizo(j: n_ro) DO
         memo := j;
           END nomizo;

           liva:=memo;
           dekstra := memo MOD 5 + 1;

           WHILE
         mangxite /= morta_mangxo
           LOOP
        -- la filozofo pensadu ĝis malsatiĝo
        pasejo.enen;
        ilo(dekstra).prenu; ilo(liva).prenu;    -- la forkojn;
        -- la filozofo iom manĝu
        ilo(liva).remetu; ilo(dekstra).remetu;  -- la forkojn;
        mangxite := mangxite+1;
        pasejo.elen;
           END LOOP;

         END pensisto;

       BEGIN --------- komenco de la tuta mangxado:
         FOR k IN n_ro LOOP
           ulo(k).nomizo(k);
         END LOOP;
       END mangxado;