B
barton
Unregistered / Unconfirmed
GUEST, unregistred user!
我的服务器马上需要提交测试了。可是到最后有个VC++程序员告诉我:不能用线程阻塞式,
因为这意味着1000个用户连接需要开1000个线程,而这么多线程服务器怎么能够承受!是
啊!我从前写个七八个服务器最多的时候也只有20多个并发连接,一点速度上的问题都没
有。这几天头脑里都是线程、线程、线程:(
服务器线程阻塞式的理由:支持多CPU和CPU的超线程性能;对连接响应快;方便连接管理。
你看看sconnect.pas、mconnect.pas、scktmain.pas,你就会发现,Borland在关键的时候
都用线程阻塞,一定有他的道理。
服务器非阻塞式的理由:线程少,易于调试和维护,CPU负荷轻。那位VC++程序员似乎一口
咬定线程阻塞式不能用于太多连接的服务器。
我的系统核心需要占用2-3个线程,一个主线程,一个维护线程,一个运行线程,处于维护
状态的时候只有两个线程,运行状态的时候三个线程。当然,如果有用户连接,每个连接
相应增加一个线程。线程间的同步没有问题,都是通过消息和队列管理来实现的,保证线
程间不会发生冲突。除主线程外,每个线程大多数情况下都处在wait函数中。
同意或反对线程阻塞式的都请举起你们高贵的手来,如果能说出点经验之谈,另有高分相
赠!
因为这意味着1000个用户连接需要开1000个线程,而这么多线程服务器怎么能够承受!是
啊!我从前写个七八个服务器最多的时候也只有20多个并发连接,一点速度上的问题都没
有。这几天头脑里都是线程、线程、线程:(
服务器线程阻塞式的理由:支持多CPU和CPU的超线程性能;对连接响应快;方便连接管理。
你看看sconnect.pas、mconnect.pas、scktmain.pas,你就会发现,Borland在关键的时候
都用线程阻塞,一定有他的道理。
服务器非阻塞式的理由:线程少,易于调试和维护,CPU负荷轻。那位VC++程序员似乎一口
咬定线程阻塞式不能用于太多连接的服务器。
我的系统核心需要占用2-3个线程,一个主线程,一个维护线程,一个运行线程,处于维护
状态的时候只有两个线程,运行状态的时候三个线程。当然,如果有用户连接,每个连接
相应增加一个线程。线程间的同步没有问题,都是通过消息和队列管理来实现的,保证线
程间不会发生冲突。除主线程外,每个线程大多数情况下都处在wait函数中。
同意或反对线程阻塞式的都请举起你们高贵的手来,如果能说出点经验之谈,另有高分相
赠!