我正在尝试实现队列的线程安全版本,并在实现 pop() 的包装器时遇到问题。参考下面的代码。由于限制,无法粘贴整个代码。
bool internal_pop_front_no_lock(T& item)
{
bool isDataAvailable = false;
if (!m_Queue.empty())
{
item = m_Queue.front();
m_Queue.pop();
isDataAvailable = true;
}
return isDataAvailable;
}
现在我觉得行item = m_Queue.front();
会复制数据。有没有办法避免复制?还是我误解了什么?