gra*_*ski 5 c c++ unix sockets linux
我正在研究一个linux服务器程序,它为每个客户端创建一些共享内存,并使用该共享内存中的消息队列(从代码调用的C++类)来回发送消息.从表面上看,这听起来像是与域套接字相同的使用模式 - 即拥有一个服务器程序,可以从其客户端发送和重新获取有效负载.
我的问题是 - unix域套接字做了多少额外的工作?可以想象,使用消息队列的共享内存比套接字更快,反之亦然?
我的猜测是调用send和recv有一些开销,但我不确定是什么.我可能会尝试对此进行基准测试,只是在我这样做之前寻找一些见解.
以下是一个讨论: UNIX域套接字与共享内存(映射文件)
我可以补充一点,套接字是非常原始的,只是流套接字的字节流.这实际上可能是一个优势 - 它倾向于使不同子系统之间的消息变得小而简单,促进精益接口和松散耦合.但有时,共享内存非常有用.我在C++ Linux后端使用共享内存到数据密集型Google Maps应用程序 - 数据库在共享内存中只是巨大的(+1千兆字节)png栅格.
| 归档时间: |
|
| 查看次数: |
4310 次 |
| 最近记录: |