Yurttas/PL/IL/Ada-95/F/06/r-w/readers writers 00.adb

From ZCubes Wiki
Jump to navigation Jump to search
 1--
 2-- Copyright(C) 1998
 3-- All Rights Reserved. Salih Yurttas, ZCubes, BitsOfCode Software Systems, Inc..
 4--
 5-- Permission to use, copy, modify, and distribute this
 6-- software and its documentation for EDUCATIONAL purposes
 7-- and without fee is hereby granted provided that this
 8-- copyright notice appears in all copies.
 9--
10 
11-- date   : January 1, 1998.
12-- author : Salih Yurttas.
13
14-- readers_writers_00.adb
15
16
17procedure Readers_Writers_00 is
18
19  task type R_W_Scheduler is
20    entry Start_Read;
21    entry Stop_Read;
22    entry Start_Write;
23    entry Stop_Write;
24  end R_W_Scheduler;
25
26  task body R_W_Scheduler is
27    Number_of_Readers : Integer := 0;
28  begin
29    loop
30      select 
31        when Start_Write'Count=0 =>
32          accept Start_Read do
33            Number_of_Readers := Number_of_Readers+1;
34          end Start_Read;
35        or accept Stop_Read do
36             Number_of_Readers := Number_of_Readers-1;
37           end Stop_Read;
38        or when Number_of_Readers=0 =>
39             accept Start_Write;
40             accept Stop_Write;
41             for I in 1..Start_Read'Count
42             loop
43               accept Start_Read do
44                 Number_of_Readers := Number_of_Readers+1;
45               end Start_Read;
46             end loop;
47      end select;
48    end loop;
49  end R_W_Scheduler;
50
51begin
52
53  null;
54
55end Readers_Writers_00;