服务器流程图
2025-05-08 17:18:42 0 举报
服务器流程图
作者其他创作
大纲/内容
加入到json链表队列
接收客户发过来的订单信息(json格式),信号量msg_non_empty+1操作并加互斥锁,把它插入消息处理队列,插入成功则将msg_non_full-1操作,解互斥锁
退出线程
‘c’创建分离线程:通过fd查看链表节点的uc_id,通过uc_id查找账单表里的账单信息,将查找结果反馈给客户。
Main线程
订单处理:1、Buf是json格式字符串订单(包含所选菜品的编号和数量),查询库存表(inventory_tbl),当storage>0时,通过dishid查找到的菜品,插入待处理订单链表,加互斥锁。2、将订单信息插入账单表生成账单及编号
从待处理json链表队列里取出消息:1.msg_non_empty-1操作并加互斥锁,取消息结点,msg_non_full+1操作并解互斥锁
取出json结点
查找库存表(inventory_tbl),将storage<5的设置为30,设置完成释放自由,触发main线程继续处理
利用select监听:1、是否有新连接2.监听是否有客户端发送信息。
查看订单表(order_tbl),把状态(status)为3的价格(price)汇总打印已结算总额,把状态为2的价格汇总,打印待结算总额,将两个汇总打印今日预计营业额
获得资源
等待资源
当其输入回车键,从订单队列取出一个订单进行处理,并修改订单表(order_tbl)的状态(status)为3(cooked),表示已经完成,并将信息发送给客户端显示2.输入‘a’,进行营业额盘点3.输入‘f’,更新库存第2、3步通过信号量控制,或者信号通知
服务器
接收客户端信息
订单处理
数据库更新线程更新,盘点
加入order链表队列
初始化
创建线程
有新连接
‘m’创建分离线程,查询库存表菜品信息表,转化为字符串发送给客户端
‘r’创建分离线程,查看此fd用户链表的结点uo_state,根据值判断订单状态,并将状态反馈给客户。
接收到客户端的数据有:1:查看菜谱(m);2:点菜、添加订单;3:催单(r);4:加菜();5:退菜();6:结账(c);
否
是否按回车键
有
将新连接的fd加入到监听组,同时申请链表节点,将其加入到链表队列中。
释放资源
0 条评论
下一页