2011-05-11 91 views
0

我需要编写一个线程来模拟餐厅中的餐桌。 桌子有四个座位。随机的时间客户来,如果他们找到一个空座位,他们留下,否则他们离开。 你能帮我吗? 感谢Linux线程 - 模拟餐厅表

+0

你已经写了什么代码?你有什么需要帮助的? – Grammin 2011-05-11 15:29:53

+0

这是功课吗?问题还有更多吗?桌上的人什么时候离开? – Duck 2011-05-11 15:36:48

+0

我创建了表的线程,但我有问题填充它 随时随地来去的人。 – Jim 2011-05-11 15:40:34

回答

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 
0

所以你需要初始化在餐桌的座位数的信号。人们(大概是其他线程)检查它。他们等待信号,直到他们进入。他们离开后发布信息。如果他们真的需要立即离开,如果他们没有坐下,那么使用sem_trywait之类的东西。使用某种随机的睡眠时间,他们在桌上多久。