int readcount; //共享,初值为0 Semaphore mutex, wrt; //共享,初值为1 //写者 //读者 semWait ( mutex ); readcount := readcount + 1; semWait (wrt); if readcount == 1 then senWait ( wrt ) /*执行写操作 */ semSignal ( mutex); semSignal ( wrt ) /* 执行读操作 */ semWait ( mutex); readcount := readcount - 1; if readcount == 0 then Up ( wrt); semSignal ( mutex);