竞速列车

Robert G 遭遇了一次行程中断:他的车厢意外脱钩。他需要重新预订行程,导致延误了三十分钟。为避免进一步的不便,Robert 使用铁路公司的应用程序为下一班列车预订了座位,并收到了确认信息。在等待期间,他喝了咖啡,期待行程能顺利衔接。登上下一班列车后,他遇到了一位声称已预订同一座位的乘客。两位乘客均出示了手机应用程序的确认信息,显示的是相同的座位预订且时间戳一致。他们还核对了电子邮件确认信息,进一步证实了彼此冲突的预订。幸运的是,列车并未满员,因此所有人都顺利找到了座位。这一事件凸显了铁路公司预订系统中存在一个关键的竞态条件:检查与预订过程并非原子操作。作者推测,该缺陷之所以持续存在,是由于缺乏优先级关注,无论是出于漠视,还是因为其他软件问题过多而被掩盖。该系统之所以允许两名用户同时预订同一座位,是因为检查与预订操作并未作为一个单一、不可分割的操作执行。