用户登录可进行刷题及查看答案
semaphore odd = 0, even = 0, empty = N, mutex = 1; P1( ) { x = produce(); ∥生成一个数 P(empty); ∥判断缓冲区是否有空单元 P(mutex); ∥缓冲区是否被占用 Put(); V(mutex); ∥释放缓冲区 if(x%2 == 0) V(even); ∥如果是偶数,向 P3 发出信号 else V(odd); ∥如果是奇数,向 P2 发出信号 } P2( ) { P(odd); ∥收到 P1 发来的信号,已产生一个奇数 P(mutex); ∥缓冲区是否被占用 getodd(); V(mutex); ∥释放缓冲区 V(empty); ∥向 P1 发信号,多出一个空单元 countodd(); } P3( ) { P(even); ∥收到 P1 发来的信号,已产生一个偶数 P(mutext); ∥缓冲区是否被占用 geteven(); V(mutex); ∥释放缓冲区 V(empty); ∥向 P1 发信号,多出一个空单元 counteven(); }
登录后提交答案
暂无评论,来抢沙发