日期:2014-05-16  浏览次数:20531 次

同一时间的n个请求,一次只能处理m个,分n/m次处理
如同标题:同一时间的n个请求,一次只能处理m个,分n/m次处理
好比同一时间服务器接收到100个客户端的同一类型请求,服务器一次限制处理10个请求。分10次来处理。这个问题怎么实现啊?用什么方法比较好啊。
就拿网站查话费来说:同一时间100个用户登录网站查话费,服务器只能10个10个的去处理用户发送的请求。
------解决方案--------------------
用单例模式,记录排队的人数,static count=0;

int n=10;
有人进来就
PD:
if(count<n)
{
lock(_lock){
  if(count<n)
  {
  count++;
  //这里是处理
  count--
  }
  else{
   System.Threading.Thread.Sleep(800)//等待多少秒
   goto PD;
   } 
}
else{ 
   System.Threading.Thread.Sleep(1000)//等待多少秒
   goto PD;
}
  
------解决方案--------------------
引用:
Quote: 引用:

用单例模式,记录排队的人数,static count=0;

int n=10;
有人进来就
PD:
if(count<n)
{
lock(_lock){
  if(count<n)
  {
  count++;
  //这里是处理
  count--
  }
  else{
   System.Threading.Thread.Sleep(800)//等待多少秒
   goto PD;
   } 
}
else{ 
   System.Threading.Thread.Sleep(1000)//等待多少秒
   goto PD;
}
  


现在明白了那些问题,但是这样也有问题啊。假设服务器在处理那10个请求,其中有一个请求很慢,那不就影响了整个处理效率么?

为什么不用并发呢