typedefは構造体 { フロート; フロートB; } CNUM。 CNUM X、Y、Z。 CNUM追加(CNUMのp、qはCNUM) { CNUM秒; SA = p.a + q.a。 SB = p.b + q.b。 リターン秒; } mutex1 SEM = 1 ; // T1およびT2の変数yの排他的アクセス SEM = mutex2 1 ; // 変数yにt2とt3の排他的アクセス SEM = mutex3 1 ; // 変数z排他 スレッド1。 { CNUMのワット。 P(mutex1)。 W = (x、y)を加えます。 V(mutex1)。 } スレッド2 { CNUMのワット。 P(mutex2)。 P(mutex3)。 W = (Y、Z)を加えます。 V(mutex3)。 V(mutex2)。 } スレッド3 { CNUMのワット。 WA = 1 。 WB = 1 。 P(mutex3)。 Z = (W、Z)を加えます。 V(mutex3)。 P(mutex1)。 P(mutex2)。 Y = (Y、W)を加えます。 V(mutex1)。 V(mutex2)。 }