- -?? 撒意思
你用个单态的List存在线用户(userId,activeTime)! 每一分钟整理一次List,比对时间Ticks,然后剔除用户? 你想这样吗?
这个东西应该可以使用已有的东西,例如ThreadPool,ThreadPool可以配置、自己搞也行,不过要控制的好。
其实思路你自己已经说了。
Queue + ThreadPool模式:thread pool设为200;对于收到的request,如果thread pool有空闲线程,直接交给thread pool;否则先放入queue中,等thread pool有空闲线程再从queue中取出request开始处理,同时要进行1分钟的超时控制,一般还要限制queue的最大长度。
这个模型并不复杂,可以自己实现queue的管理和任务调度,thread pool可以用CLR的ThreadPool,也可以用开源的SmartThreadPool(我们的项目用的这个,推荐)。另外,MS不久前出的CCR就是这个Queue+ThreadPool模型,也很方便。
相关链接:
http://www.codeproject.com/KB/threads/smartthreadpool.aspx
http://www.cnblogs.com/bearhand/archive/2008/06/26/1213181.html