作者:命运2502901041_350 | 来源:互联网 | 2023-06-26 11:19
假如票有100张,多线程卖票,如何保证并发 安全 呢?
1)常见思路(单体)
比如:保证 多线程对于票的修改是线程安全 的。 因此:需要加锁。在 每个线程修改的地方
synchronized(ticket){
// 检测票是否足够
// 足够则通知发货
}
2)actor模型
TicketActor: 票actor,维护票数,只有它有修改的权利。
PlayerActor:有多个,想要买票 ,先向TicketActor发起询问,TicketActor查询票是否足够,够了则通知下单。
3)队列术
还有一种是,GameServer GlobalServer这种架构,公共的数据放GlobalServer上。 多个玩家连接着GameServer,发起rpc调用询问GlobalServer是否有票。GlobalServer进行决策回复能否卖票。
可见:队列术跟actor模型其实是一样的做法。