SOCKET服务端,每连上来个连接,就创建一个单独线程 ( 积分: 200 )

M

meifeng

Unregistered / Unconfirmed
GUEST, unregistred user!
SOCKET服务端,每连上来个连接,就创建一个单独线程,并将数据插入到数据库内。而且要管理好线程,有没有谁能给一个例子什么的!谢谢
 
TServerClientThread
 
如果连接数不是很多,可以采用这种阻塞加线程的方法
若连接数很大,比如超过1000
就不太适合使用这种方式
完成端口使用有限的线程(习惯上使用CPU数目的两倍+2的工作线程和一个连接线程),应该是比较好的实现方式,只是这种方式需要花费很多时间学习和调试
目前也没有商业级的控件
 
首先你写一个线程类,这个类用来处理数据库,这个类要有一个Socket参数用来将处理结果返回给客户端.
在ClientRead事件中,创建一个线程就行了.
 
可看一下IOCP
 
C++的高手朋友大哥们,写个DELPHI的中不中?IOCP,能用的
 
每个登陆用户创建一个线程,如果登陆用户超过1000你怎么办??
楼主的问题不是用线程能解决的事,再说线程也不是万能的,多了返而对应用程序有负面影响。
 
>>SOCKET服务端,每连上来个连接,就创建一个单独线程,并将数据插入到数据库内
量少是无所谓,写起来简单。量一多,这个思路就不好了。
估计很多人写线程,且是需要与DB交互的情况下,都习惯于生成一个Connection,然后写SQL之类再操作,这样的话,10,20个连接问题不大,一多起来,估计创建DB.Connection都会有问题。
换个思路吧:
还是一个连接一个线程,但收到数据后,交到一个或多个连接到DB的处理线程,让那些线程去与DB交互。
如果写完了,还出现系统性能问题,就要再换思路,将一个连接一个线程这个思路换掉,换成N个连接一个线程,重叠模式是适合这个工作的。
上面还不成的话,再换思路,再用IOCP,一个线程管理N个连接,连接有数据,再交给与DB交互的线程。如果还觉得该应用程序有性能问题,再分离模块,连接通讯模块,DB交互模块各自一个EXE,不过写这之前,要有一个中介,共享什么的将两个EXE的数据互通。
还有问题的话,那就。。。俺也不知道了,去请教写网游的人,或者那些常写linux通讯的强人,呵呵。
 
顶部