荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: jjk (○kernel○), 信区: InstallBBS
标  题: 有关nt平台下bbs程序的一种解决方案(转寄)
发信站: 荔园晨风BBS站 (Sun Mar 24 14:36:41 2002), 转信

【 以下文字转载自 jjk 的信箱 】
【 原文由 jjksam@smth.org 所发表 】
发信人: peach (呆呆), 信区: BBSMan_Dev
标  题: 有关nt平台下bbs程序的一种解决方案(转寄)
发信站: BBS 水木清华站 (Mon Mar 18 12:00:45 2002)


I/O模型:完成端口,使用有限数量的线程,非user per thread

但仍基本可保证和user per thread的流程一样

user/thread模型:
    每个用户一个线程,用户和线程是对应的关系

完成端口模型:
    用户和线程无对应关系,用户可能在任何一个I/O线程中运行。

要想把完成端口模型模拟成user/thread模型,最关键的是保证用户和栈是对应的

至于和线程是不是对应的无所谓。

所以在完成端口模型下,在某I/O线程中处理某用户的时候,只要将当前线程的栈

替换掉,用单独为该用户分配的栈即可。

在缓冲区内数据为空时,先使用setjmp保存当前栈内容,再使用longjmp恢复原来的栈,

等下次缓冲区有数据时,再longjmp恢复该用户原来的状态。

这样即可模拟成user/thread模型。

我已经做了测试,测试通过,hoho!!

每个用户分配了64KB内存,其中8KB来存用户数据,其他的作为栈

为了使内存使用量降低,可以调整原I/O线程的栈的大小,因为I/O线程内对原有栈的需

求不再很高

每个用户64KB内存,1000个用户也才64M内存。至于其他内存需要应该不是主要的,不会

带来多大负担。

所以这种解决方法应该很不错的。不过是不是还有其他要考虑的东西,由于较忙,没有

深 想


---
                               v    y
                            (o o)(@ @)
                            (  v )( v  )
------------------------------mm-----ww-----------------------------------
Y:喜欢我嘛?            V:嘻嘻,喜欢 :)
Y:那嫁给我吧!好嘛?    V:那你替我煮一辈子饭吧! :)
Y:咣当当当.........     Y:嘿嘿,我可以给你捉一辈子虫子!!! :)


※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.55.87]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.146]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店