mutex =1;
for ( i = 0; i¨Qn2 ¨C 1 ; i ++) {
empty[i]=m; full [i]=0; }
main ( ) {
cobegin
A1 ( ) £»
A2 ( ) £»
An1 ( ) £» B1 ( ) £» B2 ( ) £»
Bn2 ( ); coend }
send ( ) /*·¢ËÍÏûÏ¢*/ {
int i;
for ( i = 0; i¨Qn2 ¨C 1 ; i ++)
p ( empty[i] ) ; P ( mutex ) ;
½«ÏûÏ¢·ÅÈ뻺³åÇø£»
v ( mutex )£»
for ( i = 0; i¨Qn2 ¨C 1 ; i ++)
v ( full [i] ) ;
}
receive ( ) /*½ø³ÌB1½ÓÊÕÏûÏ¢*/ {
p ( full [i] ) ; P ( mutex ) ;
½«ÏûÏ¢´Ó»º³åÇøÖÐÈ¡³ö£»
v ( mutex )£»
¡ ¡ v ( empty[i] ) ;
}
Ai ( ) /*Òò·¢Ëͽø³ÌA1¡¢A2£¬¡An1µÄ³ÌÐòÀàËÆ£¬ÕâÀïÖ»¸ø³ö½ø³ÌAiµÄÃèÊö*/ {
while ( 1 ) {
send ( )£» }
Bi ( ) /*Òò½ÓÊܽø³ÌB1¡¢B2£¬¡Bn1µÄ³ÌÐòÀàËÆ£¬ÕâÀïÖ»¸ø³ö½ø³ÌBiµÄÃèÊö*/ {
while ( 1 ) {
receive ( i )£» }
¡ ¡ ¡ ¡