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_01.adb
15
16
17procedure Readers_Writers_01 is
18
19 subtype Message is String(1..4);
20
21 M : Message := "2222";
22
23 task type R_W_Scheduler is
24 entry Start_Read;
25 entry Stop_Read;
26 entry Start_Write;
27 entry Stop_Write;
28 end R_W_Scheduler;
29
30 task body R_W_Scheduler is
31 Number_of_Readers : Integer := 0;
32 begin
33 loop
34 select
35 when Start_Write'Count = 0 =>
36 accept Start_Read do
37 Number_of_Readers := Number_of_Readers+1;
38 end Start_Read;
39 or accept Stop_Read do
40 Number_of_Readers := Number_of_Readers-1;
41 end Stop_Read;
42 or when Number_of_Readers = 0 =>
43 accept Start_Write;
44 accept Stop_Write;
45 for I in 1..Start_Read'Count
46 loop
47 accept Start_Read do
48 Number_of_Readers := Number_of_Readers+1;
49 end Start_Read;
50 end loop;
51 end select;
52 end loop;
53 end R_W_Scheduler;
54
55begin
56
57 null;
58
59end Readers_Writers_01;