public class A{ private Queue<InverstModel> inverstQueue = new Queue<InverstModel>(); private static object lockObject = new Object(); public ActionResult B(InverstModelmodel){ inverstQueue.Enqueue(model); lock (lockObject) { while (inverstQueue.Count > 0) { var _model = inverstQueue.Dequeue(); //此处是业务逻辑操作,每个进来的用户都会执行一遍逻辑操作,并且返回逻辑操作结果用户给前台 } } } }
这里的疑问是很多用户要访问控制器B,我在每个用户访问控制器B的时候,首先加入队列
然后锁住,并且循环队列,那么我应该怎么从控制器进行返回呢?
直接return Result 啊
似乎用不着队列,队列是用于解决文件并发或数据库并发,比如往错误日志里写数据、数据库增删改很频繁的时候,访问控制器是没有并发问题的,而且使用队列的时候不需要加lock的。
你这个队列里对于用户访问来说永远都是一个,首先你这个队列不是一个静态变量(即便是静态变量,在分布式环境下,就是多个静态变量),而是一个字段,每个人访问你的action B的时候都会创建一个控制器类A,并且会创建一个队列,而你这个队列对于每个用户而言都是自己的,所以你这队列没有意义!