我需要写一个模拟餐馆桌子的线程。 桌子有四个座位。随机时间客户来了,如果他们 找个空座位,否则就走了。 你能帮我么? 感谢
答案 0 :(得分:0)
这是一些伪代码:
-- A Table Thread
integer num_free_seats := 4
loop forever
wait for customer c
if num_free_seats > 0
seat_customer(c)
num_freeSeats := num_free_seats - 1
else
throw_out_customer(c)
end if
答案 1 :(得分:0)
因此,您需要将信号量初始化为表格中的席位数。人们(可能是其他线程)检查它。他们等待信号量直到他们进入。他们在离开时发布信息。如果他们真的需要立即离开,如果他们没有坐下,那么使用像sem_trywait这样的东西。使用某种随机睡眠来确定他们在桌上的时间。