IT小河马@hbuer 2023-11-29 15:56 采纳率: 0%
浏览 3

多线程下的一个线程运行问题

有这么一个场景,1个售票处共有100张票,一共有10个乘客每个乘客一次只能买1-6张票,并且每次买完票后会对售票处进行一个减票操作(比如当前售票处有100张,一个乘客买了5张,然后售票处现在是95) ,这里每个乘客看做一个线程,100张票是共享资源,最后运行的结果是剩余68张 卖出35张(这里不考虑加锁问题)
我的疑惑是 最多卖出去60张,即便买票方法不加锁,线程之间来回切换,也不应该出现剩余票数时68 而卖出35

img

  • 写回答

3条回答 默认 最新

  • Bianca1 2023-11-29 16:32
    关注

    举个例子, 两个线程(乘客)并发读取到了剩余票100张(共享资源),一个消费了1张,一个消费了2张,那么这两个线程(乘客)买完票后,剩余票不是 99 就是 98,此时两个线程(乘客)其中一个是不是漏算了, 就会出现你上面的超卖现象(卖出+剩余数 大于了原始数据)

    评论

报告相同问题?

问题事件

  • 创建了问题 11月29日