版上各位先进好:
小弟我目前在设计多执行绪的服务器上遇到效能瓶颈,
底层的Socket Server是用Boost::Asio,
单纯用single io_service & multiple thread的架构处理效能还不错,
但目前系统上都会需要封包指令是要将某个index要对应到某个session,
所以只好在accept时把index跟session存入到map中,这时就需要使用lock去做保护,
因为加了这个lock导致在一秒内如果是上万的连线数要aceept延迟就会提高,
后面开始run的过程中因为我使用的是shared_mutex,
所以对map纯读(shared_lock)感觉效能还可以。
如果是单纯读写分离的Queue还可以用boost::lockfree去处理,
但遇到真的架构上就需要有一个map,这种情况就不知道怎么优化它,
想问版上的各位先进有什么设计方向可供我参考,谢谢。