项目:典型的聊天程序。服务器必须接收来自多个客户端的文本,并将每个输入扇出给所有客户端这是shared_ptr的合适用法吗?
在服务器中,我希望每个客户端都有一个包含套接字fd和std ::队列的结构。每个结构将在std :: list上。
当从客户端套接字接收到输入时,我想遍历结构列表并将新输入放入每个客户端结构的队列中。一个字符串是新的[编辑],因为我不希望字符串的副本乘以所有的客户端。但我也想避免让多个指向字符串的指针展开并决定何时最终删除字符串的问题。
这是一个适合共享指针的场合吗?如果是这样,每次我将他们推入队列时,shared_ptr是否递增,并在队列中弹出时递减?
感谢您的任何帮助。
是的,虽然我认为它不适合使用'std :: list'。 '矢量'FTW! :) – 2012-03-13 02:01:12
@Billy ONeal - 为什么是矢量?对于不断添加和删除连接的内容,OP的列表选择似乎更好。 – Duck 2012-03-13 02:07:09
@Duck:'std :: list'具有较差的局部性,这通常会使性能超过一些额外的副本。 – 2012-03-13 02:09:41