23 lines
1.1 KiB
HTML
23 lines
1.1 KiB
HTML
<titolo>Un esempio di monitor</titolo>
|
|
<corpo>
|
|
<codeblock>
|
|
<name>single resource</name>: <kw>monitor</kw><br />
|
|
<kw>begin</kw><br />
|
|
<idt></idt><name>busy</name>: <type>Boolean</type>;<br />
|
|
<idt></idt><name>nonbusy</name>: <type>condition</type>;<br />
|
|
<idt></idt><kw>procedure</kw> <name>acquire</name>;<br />
|
|
<idt></idt><idt></idt><kw>begin</kw><br />
|
|
<idt></idt><idt></idt><idt></idt><kw>if</kw> <name>busy</name> <kw>then</kw> <name>nonbusy</name>.<call>wait</call>;<br />
|
|
<idt></idt><idt></idt><idt></idt><name>busy</name> := <value>true</value><br />
|
|
<idt></idt><idt></idt><kw>end</kw>;<br />
|
|
<idt></idt><kw>procedure</kw> <name>release</name>;<br />
|
|
<idt></idt><idt></idt><kw>begin</kw><br />
|
|
<idt></idt><idt></idt><idt></idt><name>busy</name> := <value>false</value>;<br />
|
|
<idt></idt><idt></idt><idt></idt><name>nonbusy</name>.<call>signal</call><br />
|
|
<idt></idt><idt></idt><kw>end</kw>;<br />
|
|
<idt></idt><name>busy</name> := <value>false</value>;<br />
|
|
<kw>end</kw> <name>single resource</name>
|
|
</codeblock>
|
|
</corpo>
|
|
<autore>Pietro Tessarolo</autore>
|