假设我有: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);
考虑到我此事件有一个队列:
typedef std::queue<EventPtr> EventQueue
EventQueue theQueue;
后来的后来,另一个线程弹出一个事件从队列并把它掉的东西来处理事件:
EventPtr event = theQueue.front();
EventProcessor::process(event); //pseudocode
theQueue.pop();
再次,process
方法的适当方法签名是什么?我想知道如果我可以通过裸体Event*
的过程方法?
我想我想知道我是否应该通过价值所以引用计数是准确的?我真的只关心这样一个事实,即一个线程正在推入队列,另一个线程正在弹出队列,我不会在某处泄漏指针...
谢谢!