我正在用C编写一个程序,允许只有一名员工的Coffe Shop为多个客户提供服务。为此,我做了两个流程,(1)客户流程和(2)员工流程。
我的问题是,
更多详情:当客户到达时,他等待员工免费,然后客户说你好,然后员工说你好。员工在等待他/她决定要获得什么之前等待客户。在做出决定后,员工为客户服务,然后他们每个人都做他们想做的事。
我使用了3个信号量
sem customer = 0; // Number of customers in the shop
sem readyToTakeOrder = 1; // Employee is free and ready to take order
sem endOrder = 1; // Customer finished giving his order
我的客户算法如下,
void customer(){
customer.signal();
readyToTakeOrder.wait();
print("I want a coffee");
endOrder.signal();
leave(); // leave the shop
}
员工算法,
void employee(){
customer.wait();
print("How can I help you");
readyToTakeOrder.signal();
endOrder.wait();
serveCoffee(); // make customer's coffee
leave(); // end serving this customer
}