12306 车票候补可能死锁吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
loveiset
V2EX    问与答

12306 车票候补可能死锁吗

  •  
  •   loveiset 2019-09-29 13:54:37 +08:00 3257 次点击
    这是一个创建于 2229 天前的主题,其中的信息可能已经有所发展或是发生改变。

    两个人,互相候补了对方的票,结果到最后两个人都没候补成功,更多人同理,有没这样的可能

    13 条回复    2019-09-30 09:27:05 +08:00
    tanranran
        1
    tanranran  
       2019-09-29 15:15:29 +08:00
    候补有一个排名(按照支付时间)啊,除非你俩都是同一名次。
    pkookp8
        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 方人数得一致。供小于求的时候这个问题不是问题,宁愿绕路。供大于求的时候问题也不是问题,不会出现很多人都在等对方解锁
    0DBBFF
        3
    0DBBFF  
       2019-09-29 15:25:17 +08:00
    不是很懂候补对方的票,都有票为什么还会候补。不同车直接退票就释放了,候补就能拿到,怎么死锁?
    pkookp8
        4
    pkookp8  
       2019-09-29 15:28:34 +08:00 via Android
    想了下,还是不可能
    初始条件是 a 先买 B,b 先买 A
    总有一方买的时候另一辆车是有空位的,除非是自己的选择,之后又换了
    SFGarfield
        5
    SFGarfield  
       2019-09-29 15:35:56 +08:00
    一个按照订单维度的先进先出的队列就可以搞定了。另外 12306 也有行程冲突的检查。
    yukiww233
        6
    yukiww233  
       2019-09-29 15:41:02 +08:00
    这不是死锁啊,人为退票就已经释放资源了
    across
        7
    across  
       209-09-29 15:48:05 +08:00
    你说的群众拿在手上的资源,你不退票票务都不知道可用,靠票务无解。
    另外同一个行车时间重叠我记得是没法进行多张订票的。如果你一定要订到票后再退票,那肯定死锁,不过基数够大,而且退的越晚亏得越多,死锁可能性很低吧。
    BCy66drFCvk1Ou87
        8
    BCy66drFCvk1Ou87  
       2019-09-29 15:48:12 +08:00 via Android
    候补都是排队的,毫秒之差也是顺序。一乘客在某个时间段内的某个行程只能拥有一张票(否则行程冲突),要获取他人的票就必须先释放,不是死锁
    wildcat007
        9
    wildcat007  
       2019-09-29 15:54:47 +08:00
    我之前购买了:8 点 30 出发的车(举例)
    后来我候补了:9 点 30 和 10 点出发的车
    从最开始的候补几十人,过了几天一直显示我候补排队第二名~不知道什么鬼
    感觉是和 [如果人在某个时间段在火车上,那么就不能继续购票] 的原则冲突了
    不知道是不是影响后面候补排名 3 以及以后的人购票了
    lukaz
        10
    lukaz  
       2019-09-29 16:12:31 +08:00 via Android
    人为导致的死锁是可能的,两个人都各自先买了票,然后又想换成对方的票,并且在候补成功前不进行退票操作。假设此时没有其他退票出现,那么这两个候补请求就出现“人为死锁”了。
    至于说行程时间检查,候补的票可以是错开时间的啊,比如一个人想提前出发,另外一个人想延后出发。
    009694
        11
    009694  
       2019-09-29 16:21:16 +08:00
    这种应该不能叫死锁吧。。感觉叫困境更合适。 实际上更类似于先交钱还是先交货的矛盾
    loveiset
        12
    loveiset  
    OP
       2019-09-29 17:52:56 +08:00
    @0DBBFF 比如我现在有 26 号的票,候补了 27 号的,票难买啊,只能等候补到了 27 的再把 26 的退掉;
    另一个人想法一样,不过他已经买到了 27 号的,候补的是 26 号的,感觉有这种可能,是不是如果前面一直排名是 1,都在等对方退,然后都没等到~
    zzugyl
        13
    zzugyl  
       2019-09-30 09:27:05 +08:00
    如果 12306 做的比较强大,检测到这种情况,直接兑换,是否可行?
    目前我觉得不会死锁,候补有个截止兑现时间,估计你说的死锁在这一刻可以按订单顺序放开,订单顺序中排在后面一个拿到票。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2411 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 15:50 PVG 23:50 LAX 07:50 JFK 10:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86