两个人,互相候补了对方的票,结果到最后两个人都没候补成功,更多人同理,有没这样的可能
1
tanranran 2019-09-29 15:15:29 +08:00
候补有一个排名(按照支付时间)啊,除非你俩都是同一名次。
|
2
pkookp8 2019-09-29 15:25:14 +08:00 via Android
照道理,是可能的
a 认为我有 B 票,希望有 A 票,B 有点绕路,A 直达 b 认为我有 A 票,希望拿到 B 票,A 有点绕,B 直达 a 候补不到 A 就不退 B,b 拿不到 B 就不退 A 但人数很多,只要有一个退票了就可以解锁,只剩一对死锁 一对死锁的条件还挺苛刻的,ab 方人数得一致。供小于求的时候这个问题不是问题,宁愿绕路。供大于求的时候问题也不是问题,不会出现很多人都在等对方解锁 |
3
0DBBFF 2019-09-29 15:25:17 +08:00
不是很懂候补对方的票,都有票为什么还会候补。不同车直接退票就释放了,候补就能拿到,怎么死锁?
|
4
pkookp8 2019-09-29 15:28:34 +08:00 via Android
想了下,还是不可能
初始条件是 a 先买 B,b 先买 A 总有一方买的时候另一辆车是有空位的,除非是自己的选择,之后又换了 |
5
SFGarfield 2019-09-29 15:35:56 +08:00
一个按照订单维度的先进先出的队列就可以搞定了。另外 12306 也有行程冲突的检查。
|
6
yukiww233 2019-09-29 15:41:02 +08:00
这不是死锁啊,人为退票就已经释放资源了
|
7
across 2019-09-29 15:48:05 +08:00
你说的群众拿在手上的资源,你不退票票务都不知道可用,靠票务无解。
另外同一个行车时间重叠我记得是没法进行多张订票的。如果你一定要订到票后再退票,那肯定死锁,不过基数够大,而且退的越晚亏得越多,死锁可能性很低吧。 |
8
HuasLeung 2019-09-29 15:48:12 +08:00 via Android
候补都是排队的,毫秒之差也是顺序。一乘客在某个时间段内的某个行程只能拥有一张票(否则行程冲突),要获取他人的票就必须先释放,不是死锁
|
9
wildcat007 2019-09-29 15:54:47 +08:00
我之前购买了:8 点 30 出发的车(举例)
后来我候补了:9 点 30 和 10 点出发的车 从最开始的候补几十人,过了几天一直显示我候补排队第二名~不知道什么鬼 感觉是和 [如果人在某个时间段在火车上,那么就不能继续购票] 的原则冲突了 不知道是不是影响后面候补排名 3 以及以后的人购票了 |
10
lukaz 2019-09-29 16:12:31 +08:00 via Android
人为导致的死锁是可能的,两个人都各自先买了票,然后又想换成对方的票,并且在候补成功前不进行退票操作。假设此时没有其他退票出现,那么这两个候补请求就出现“人为死锁”了。
至于说行程时间检查,候补的票可以是错开时间的啊,比如一个人想提前出发,另外一个人想延后出发。 |
11
009694 2019-09-29 16:21:16 +08:00
这种应该不能叫死锁吧。。感觉叫困境更合适。 实际上更类似于先交钱还是先交货的矛盾
|
12
loveiset OP @0DBBFF 比如我现在有 26 号的票,候补了 27 号的,票难买啊,只能等候补到了 27 的再把 26 的退掉;
另一个人想法一样,不过他已经买到了 27 号的,候补的是 26 号的,感觉有这种可能,是不是如果前面一直排名是 1,都在等对方退,然后都没等到~ |
13
zzugyl 2019-09-30 09:27:05 +08:00
如果 12306 做的比较强大,检测到这种情况,直接兑换,是否可行?
目前我觉得不会死锁,候补有个截止兑现时间,估计你说的死锁在这一刻可以按订单顺序放开,订单顺序中排在后面一个拿到票。 |