采用阻塞方式设计Server端程序,关于线程操作的问题(100分)

B

BUSI

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个服务端的程序,有多个客户端连接,我想事先建立一个线程池,一旦有
客户连接,就从线程池中取出线程给用,直到没有线程可用为止,客户端用完后,
系统将线程收回,等待下一个客户的连接.不知道有谁在这方面有经验,
或是想做相关的程序,能否共同讨论一下,当然也希望大家给我指点一二,
多谢了!!

还有就是我想知道如果想照上面做的话,是不是就不能调用OnGetThread过程了,
而且我看很多人说用TServerSocket来做多线程程序不合适,能说说原因吗,不想
做程序误入崎途,多谢指点了!!!!!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=883220
 
to bluely:
很感谢你的回答,我是个新手,问的幼稚处,也请不要吝惜笔墨,你给我的贴子很不错,我现在还只能关注具体的实现,
有几个问题:
1: 引用你的"每建立一个连接就同时建立一个线程,并创建一个TDataBase和TStoredProc,TSession来执行后台数据库的
存储过程客户端断开后就释放销毁线程和相关组件,这样的设计在并发请求不超过60个的时候还是可以应付
得来的,但如果再多,就不行了,因为受到BDE的Tsession数量限制,即使能突破BDE的限制,也要受到系统线程数
量的限制,并且CPU时间大都花在创建和销毁组件这些重复的动作上了"。我想知道的是:
如何创建线程内的TDataBase,TSession等,是在Form的主线程中用组件,然后当成参数
传给线程吗?Tsession怎么用!如何动态的创建Tsession!!
如何销毁线程,和相关组件释放资源,??如何实现线程池来降低线程对资源的消耗!!

bluely大侠,拜托能给我讲讲课,能给我讲讲具体的实现行吗??
我的qq:17456693,email:busi2002@sina.com
己已达而达人,敬侯老师的声音!!!!



 
如果是大量的处理,最好自己用api编写,控件不好控制。
用tserversocket来做多线程也没有什么不好,对很频繁的连接请求时最好还是用阻塞
的线程方式,这样在连接时就很少出现拒绝client的连接。
如果用tserversocket,我建议还是有一个连接再建立一个线程,处理完了释放线程。
我有一个简单的demo,发给你看看。有问题再联系。
 
to chenxz
能不能给我一个 多谢!

MAIL:NETLL@21CN.COM
 
顶部