排队怎么设计呢。
在做一个类似欢乐斗地主比赛场,参加比赛拿到比赛号码的游戏,因为考虑到很多人同时进行排队,这时候排队号码该如何生成呢?之前是用LOCK锁住程序,一个人排完了,其他人才排,但是这种效率有点低,求解更好的思路。是ASP.NET版+flash的
asp.net
flash
游戏
------解决方案--------------------没实际做过
不知道 http长连接 或者ajax轮询 请求不知道能否实现呢
------解决方案--------------------我的解决方案两个:
1.用原子锁,速度是原子级别的
static int num = 1;
public int NewNum
{
get{return Interlocked.Increment(ref num);}
}
不过你的程序要是12360那种并发,这个显然还是不行
2.预排号
就是预先分配几组编号比如1-10000 10001-20000...
然后开多个线程分配号码。
------解决方案--------------------
flash直接用套接字不就好了
------解决方案--------------------第二个里面也可以用原子锁,也可以用Monitor,Mutx等
当然要平均的把用户引导给所有分组。你也可以引入状态的概念,分配前获取每个组有多少用户在等,以便合理把请求分配到组。