【发布时间】:2020-11-23 12:43:46
【问题描述】:
我正在尝试实现队列的线程安全版本,并在实现 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(); 行会复制数据。有没有办法避免复制?还是我误会了什么?
【问题讨论】:
-
m_Queue 是 std::queue 吗?
-
@Surt 这是您将 OP 指向 minimal reproducible example 的位置。
-
@surt .. 是的 m_Queue 是 std::queue。