Подходит ли это использование для shared_ptr?

Проект: типичная программа чата. Сервер должен получать текст от нескольких клиентов и рассылать каждый ввод всем клиентам.

На сервере я хочу, чтобы каждый клиент имел структуру, содержащую сокет fd и std::queue. Каждая структура будет находиться в std::list.

Когда входные данные получены из клиентского сокета, я хочу пройтись по списку структур и поместить новые входные данные в очередь каждой клиентской структуры. Строка является новой[ed], потому что я не хочу, чтобы копии строки умножались на всех клиентов. Но я также хочу избежать головной боли, связанной с разбросом нескольких указателей на строку и принятием решения, когда пришло время окончательно удалить строку.

Является ли это подходящим случаем для общего указателя? Если да, увеличивается ли значение shared_ptr каждый раз, когда я помещаю их в очередь, и уменьшается ли оно, когда я извлекаю их из очереди?

Спасибо за любую помощь.

0
задан Translucent Pain 13 March 2012 в 01:51
поделиться