问题描述
webapi如何实现多用户同时请求时,webapi如何将请求加入到队列中,进行队列先后处理,工作原理是怎样的,因为网上的webapi资料真的不是很多,没有比较浅显的比喻进行讲解,比如有10个水果,如果多用户请求同时从webapi获取时,就要看先后,如果第一个拿了5个,第二个请求六个,就会返回获取水果失败,后面的再继续
解决方案
解决方案二:
拿水果的成功失败是靠数据库或者程序内部处理并发来控制的吧,并不是去控制webapi本身的请求数量
解决方案三:
引用1楼xdashewan的回复:
拿水果的成功失败是靠数据库或者程序内部处理并发来控制的吧,并不是去控制webapi本身的请求数量
单多个用户同时请求了Action,水果是比较简单的比较,忘了加上一个问题,单我这个Action处理时,因为当中有很多条件对比等,可能会有些耗时处理数据,比如在第一个在处理拿5个水果时有一定的耗时,第一用户的请求必须等到第一个处理完后,才能知道是否可以拿到6个水果
解决方案四:
第二用户的请求必须等到第一个处理完后,才能知道是否可以拿到6个水果,打错字了
解决方案五:
webapi网上介绍的,大多数直接调用自定义类里的Action来返回数据,那如何webapi能够实现和服务端那样进行处理,接收到请求,放入队列中,有个定时器循环读取,进行按队列顺序处理返回。webapi是否能够实现这种处理,能实现的话,工作原理是怎样的
解决方案六:
引用4楼foshanfdhjp的回复:
webapi网上介绍的,大多数直接调用自定义类里的Action来返回数据,那如何webapi能够实现和服务端那样进行处理,接收到请求,放入队列中,有个定时器循环读取,进行按队列顺序处理返回。webapi是否能够实现这种处理,能实现的话,工作原理是怎样的
WEB都是多线程并发的,不适合你说的队列模式。你所需要的并发的数据管理,加锁可以了。
解决方案七:
webapi本来就是多线程,怎么能这样玩?你在其内部可以使用一个staticlock或者调用其他单例再或者使用数据库等
解决方案八:
统一楼上的这事跟webapi没啥关系你内部逻辑用个lock
解决方案九:
引用7楼u011710947的回复:
统一楼上的这事跟webapi没啥关系你内部逻辑用个lock
统一->同意
解决方案十:
引用8楼u011710947的回复:
Quote: 引用7楼u011710947的回复:
统一楼上的这事跟webapi没啥关系你内部逻辑用个lock统一->同意
同意,加锁,线程同步问题.
解决方案十一:
这就是可用量的问题,加锁,减去拿走的,返回可用量,解锁