V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
loveiset
V2EX  ›  问与答

12306 车票候补可能死锁吗

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

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

    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  
       2019-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   ·   实用小工具   ·   2855 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:34 · PVG 16:34 · LAX 00:34 · JFK 03:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.