Linux线程 - 模拟餐厅桌

时间:2011-05-11 15:28:08

标签: linux

我需要写一个模拟餐馆桌子的线程。 桌子有四个座位。随机时间客户来了,如果他们 找个空座位,否则就走了。 你能帮我么? 感谢

2 个答案:

答案 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这样的东西。使用某种随机睡眠来确定他们在桌上的时间。