2 u010499298 u010499298 于 2016.03.18 17:02 提问

一个web项目并发问题。 2C

有一次面试被问到一个并发问题:
如果两个人同时竞价,在几乎同时点击竞价按钮的时候,这个web应用程序是如何做出判断到底谁先做出竞价的?

5个回答

dullchap
dullchap   2016.03.18 17:10

我简述一下我的个人观点:

两个人同时点击竞价按钮,向WEB发送请求时:

首先,网络情况是不一样的,谁的请求先发送到服务器,自然服务器认为谁先做出竞价。

其次,假设请求又刚好同时到达服务器,那么自然是谁先拿到Lock就是谁先做出竞价。

有可能同时拿到Lock吗?

对于单CPU来说,没有可能,通过操作系统原理我们得知:

多进程及多线程其实也不过是通过不停切换CPU在各进程(线程)来实现的。

也 就是同一个瞬间,CPU只能做一件事。

希望我的观点对你有帮助。

dullchap
dullchap 回复伍丰: 其JAVA以前针对这个问题打过一个补丁,JVM会在加锁前声明共享内存,被声明后共享内存会使得OS调度产生变化,多核CPU也不会同时访问这段共享内存,从而实现加锁过程只有一个请求能够进行
接近 2 年之前 回复
u010499298
u010499298 我觉得既然面试官问这个问题,应该是在问多CPU的情况下是如何处理的。还请大神再继续给讲解一下。
接近 2 年之前 回复
u010499298
u010499298 hi,首先谢谢,那么如果是多CPU呢?
接近 2 年之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2016.03.18 17:12

这个是涉及到并发的问题了,,同时发出请求的话,,总有一个谁先谁慢的

oyljerry
oyljerry   Ds   Rxr 2016.03.18 17:55

先判断是否两个人都提交的数据合法成功了,然后就是可以客户端上提交的时候带上自己的时间戳等,不过要记得加密等,不让人破解,这样服务器端可以根据这个来判断

GuYueDream
GuYueDream   2016.03.21 11:04

我想应该是用数据库中的数据锁来解决

GuYueDream
GuYueDream   2016.03.21 11:03

我想应该是用数据库中的数据锁来解决

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!