Yurttas/PL/IL/Ada-95/F/06/r-w/readers writers 00.adb
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;