blob: 12507b104ee93d9a9ba7431caa68042c5da2c1de [file] [log] [blame]
program IOStreamProgram {
monitor IOStream {
var buffer : portion;
var count : integer := 0;
var nonEmpty : condition;
var nonFull : condition;
procedure append(in x : portion) {
if count = 1 then {
nonFull.wait();
}
buffer := x;
count := 1;
nonEmpty.signal();
}
procedure remove(out x : portion) {
if count = 0 then {
nonEmpty.wait();
}
x := buffer;
count := 0;
nonFull.signal();
}
}
}