Chingliu / baserver

Automatically exported from code.google.com/p/baserver
0 stars 0 forks source link

service_handler_pool的实现大大的有问题 #11

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
1、server.h里的get_service_handler调用没有进行同步,client.h里倒��
�有,不知道为啥认为server端不需要传入一个mutex.

2、get_service_handler里的实现也太简单了,if (service_handler.get() 
== 
0)就马上push_back,这样的话,如果运行个1年,我估计这个service
_handler_pool不断的增加直至内存耗尽.
作为服务端,进来1000个链接,中途随机退出500个链接,这个�
��很常见的场景,但是在这个service_handler_pool里却无法高效的�
��用这些已经退出去的链接,通常只是不断的new 
handle,这样做太粗糙了,基本上没法用,因为我估计服务端连续
运行不到1个月,这个handlepool就会过度膨胀!。

Original issue reported on code.google.com by ooseven1...@gmail.com on 8 Aug 2011 at 2:25

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
1、原来的实现里server端全部在accept线程里申请handler,所以不
需要同步;而client需要在多个线程里申请,所以要同步;
2、原来采用的是循环查询方式判断连接的忙闲,按照FIFO的方
式重用handler,并不会出现过度膨胀的情况;
3、现作了调整优化,提高了重用效率,见0.50版的更新。

Original comment by moore...@gmail.com on 11 Oct 2011 at 5:27