Monitors A monitor is a high level synchronization construct based ...
Monitors A monitor is a high level synchronization construct based ...
Monitors A monitor is a high level synchronization construct based ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
,QIDFWDWKLUGSRVLWLRQZDVDFWXDOO\DGRSWHG<br />
• :KHQSURFHVV3H[HFXWHVWKHsignalRSHUDWLRQLW<br />
LPPHGLDWHO\OHDYHVWKHPRQLWRU+HQFH4LVLPPHGLDWHO\<br />
UHVXPHG<br />
1RWHWKDWWKLVPHDQVWKDW3FDQRQO\FDOOsignalRQFH<br />
'LQLQJ3KLORVRSKHUV3UREOHP²UHYLVLWHG<br />
7KHGLQLQJSKLORVRSKHUVDUHLQRQHRIWKUHHVWDWHV<br />
var state: array[0..4] of (thinking, hungry, eating);<br />
3KLORVRSKHULFDQVHWWKHYDULDEOHstate[i] = eatingRQO\LI<br />
KHUWZRQHLJKERUVDUHQRWHDWLQJ<br />
• state[i + 4 mod 5] != eatingDQG<br />
• state[i + 1 mod 5] != eating<br />
3KLORVRSKHUVQHHGWRGHOD\WKHLUHDWLQJXQWLOFRQGLWLRQVDUHULSH²<br />
ZKHQVKHLVKXQJU\DQGLVDEOHWRREWDLQWKHFKRSVWLFNVVKHQHHGV<br />
var self: array[0..4] of condition;<br />
$VROXWLRQWRWKHSUREOHPUHTXLUHVWKDWSKLORVRSKHUiPXVWLQYRNH<br />
RSHUDWLRQVpickupDQGputdownRQDQLQVWDQFHdpRIWKH<br />
dining-philosophersPRQLWRULQWKHIROORZLQJVHTXHQFH<br />
dp.pickup(i);<br />
…<br />
eat<br />
…<br />
dp.putdown(i);