想做一个线程控制,求大神支招

bedonga 2015-11-26 12:15:20
需求是这样的,想做一个抢红包的活动,但是怕服务器响应不过来,就想用线程控制最多同时100人抢,后续进来的让其等待,请问怎么用c#实现呢?本人新手一个,求大神支招!
...全文
130 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gengchenhui 2015-11-27
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
这跟线程没有任何关系,而且服务器端也不做任何等待、或者队列。所谓排队,是从产品 UE 设计角度说的,也就是说让用户浏览器端给用户即时显示“当前忙于请排队,您之前还有150位正在排队”这种界面,但是实际上页面应该立刻返回。 有人望文生义,以为在服务器端给人家hong住响应,这是对“排队”这个业务逻辑的完全错误的理解。这种排队根本不叫排队,而叫做“无响应”! 在你的页面中,你可以使用一个 public static int 变量(假设命名为x)来记录当前有多少正在等待。当用户请求到来时,将x 加一,然后如果这个 x 值小于某个阀值(例如小于200)则直接对请求处理,如果大于阈值则直接给客户端导航到等待画面;当处理结束时,将x 减一。其实就是这么简单的东西。在服务器端无需任何阻塞、无需排队。
这样的设计还需要客户端来配合么?判断重复点击?
  • 打赏
  • 举报
回复
不是线程,是队列
bedonga 2015-11-26
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
这跟线程没有任何关系,而且服务器端也不做任何等待、或者队列。所谓排队,是从产品 UE 设计角度说的,也就是说让用户浏览器端给用户即时显示“当前忙于请排队,您之前还有150位正在排队”这种界面,但是实际上页面应该立刻返回。 有人望文生义,以为在服务器端给人家hong住响应,这是对“排队”这个业务逻辑的完全错误的理解。这种排队根本不叫排队,而叫做“无响应”! 在你的页面中,你可以使用一个 public static int 变量(假设命名为x)来记录当前有多少正在等待。当用户请求到来时,将x 加一,然后如果这个 x 值小于某个阀值(例如小于200)则直接对请求处理,如果大于阈值则直接给客户端导航到等待画面;当处理结束时,将x 减一。其实就是这么简单的东西。在服务器端无需任何阻塞、无需排队。
看是看懂了,但是实现起来还是不懂,毕竟新人,还是多谢大神解答,让我有了这样一个思路!
  • 打赏
  • 举报
回复
抢红包其实就是拼手气的,不是要排队的。更不需要在服务器上浪费资源去排队,也不能不给浏览器端即时响应。
  • 打赏
  • 举报
回复
当用户前端已经显示了“正在排队”时,如果用户重复点击,那么就不要将 x 加一。当用户超时未重复点击,说明离开了页面,就自动将x 减 一。 当用户请求到来时的x值大于阈值,但是你的并发任务数并不高(例如x=201,而并发任务数只有20个),也应该直接对请求处理,而不给客户端显示一个排队状态。
  • 打赏
  • 举报
回复
这跟线程没有任何关系,而且服务器端也不做任何等待、或者队列。所谓排队,是从产品 UE 设计角度说的,也就是说让用户浏览器端给用户即时显示“当前忙于请排队,您之前还有150位正在排队”这种界面,但是实际上页面应该立刻返回。 有人望文生义,以为在服务器端给人家hong住响应,这是对“排队”这个业务逻辑的完全错误的理解。这种排队根本不叫排队,而叫做“无响应”! 在你的页面中,你可以使用一个 public static int 变量(假设命名为x)来记录当前有多少正在等待。当用户请求到来时,将x 加一,然后如果这个 x 值小于某个阀值(例如小于200)则直接对请求处理,如果大于阈值则直接给客户端导航到等待画面;当处理结束时,将x 减一。其实就是这么简单的东西。在服务器端无需任何阻塞、无需排队。
xdashewan 2015-11-26
  • 打赏
  • 举报
回复

Queue myQ = new Queue();
            myQ.Enqueue("Hello");
            myQ.Enqueue("World");
            myQ.Enqueue("!");

            string hello = myQ.Dequeue().ToString();
bedonga 2015-11-26
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
不是线程,是队列
那样怎么做呢?能写个小例子吗?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧