总共100张票。4个窗口同时卖票问题

今天被别人问到这样一个问题,总共100张票,4个窗口卖,依照平时的方式可能就用资源同步来做了。但是别人说这样你不就是单线程了吗?求大佬解释

阅读 3.7k
4 个回答

有两个前提

  • 第一个你的机器是单核CPU
  • 第二个假设买票业务是CPU型计算,不需要IO操作,不需要读写硬盘或库

那么开几个窗口其实跟单线程是一样的,甚至由于频繁的上下文切换(线程的上下文切换由虚拟机层实现),还会比单线程耗时

多線程的代碼裏,也會有單線程的部分。假如4個窗口是4個線程,那麼去取饅頭的時候就要加鎖,此時取馒头的操作就是單線程。

想象一下真实的场景,会怎么做?

比如初中或高中餐厅卖馒头:
假设现在有4个窗口,一共100个馒头。怎么卖得快?
开始时,每个窗口各25个馒头,【谁先卖完谁找其他窗口要(这个逻辑可以不要,假设100个馒头肯定会卖光)】,所有窗口都没了就卖光了呗。

别人说这样你不就是单线程了吗???

你这个 别人 是本科还没毕业吧?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题