答: var mutex, a, p: semaphore;(3分) mutex.value= 1; a.value = 0; p.value = 0; A:(3分) Begin Repeat wait(mutex); if 水果是苹果then signal(a); else signal(p); Until false; End B:(2分) Begin Repeat wait(a); 从货架上取下苹果,放入苹果箱; signal(mutex); Until false; End C:(2分) Begin Repeat wait(p); 从货架上取下菠萝,放入菠萝箱; signal(mutex); Until false; End