shared_ptr - пройти мимо значение vs передать по ссылке

Предположим, у меня есть:

typedef boost::shared_ptr<Event> EventPtr;

В одном потоке я создаю Event и отправляю его для отправки:

Event* event = new Event();
EventPtr eventPtr(event);
EventDispatcher::dispatch(eventPtr);  //pseudocode

EventDispatcher получает EventPtr и добавляет его в очередь, которая обрабатывается в другом потоке ... но какова подходящая сигнатура метода для метода отправки?

dispatch(EventPtr event);  //will push_back(event)

или

dispatch(const EventPtr& event);  //will push_back(event);

Учитывая, что мой EventDispatcher имеет очередь:

typedef std::queue<EventPtr> EventQueue
EventQueue theQueue;

Затем, позже, другой поток извлекает событие из очереди и передает его чему-либо для обработки события:

EventPtr event = theQueue.front();
EventProcessor::process(event);  //pseudocode
theQueue.pop();

Опять же, какова подходящая сигнатура метода для метода процесса ? Мне интересно, могу ли я просто передать голое Event * методу процесса?

Думаю, мне интересно, должен ли я просто передавать по значению, чтобы счетчик ссылок был точным? Я' m действительно обеспокоен только тем фактом, что один поток проталкивается в очередь, а другой поток выходит из очереди, и я не собираюсь куда-то пропускать указатели ...

Спасибо!

8
задан Tim Reddy 16 March 2011 в 19:36
поделиться