in Source/Shared/arcana/threading/blocking_concurrent_queue.h [90:109]
bool internal_pop(T& dest, const cancellation& cancel, bool block)
{
std::unique_lock<std::mutex> lock{ m_mutex };
if (block)
{
while (!cancel.cancelled() && m_data.empty())
{
m_dataReady.wait(lock);
}
}
if (m_data.empty() || cancel.cancelled())
return false;
dest = std::move(m_data.front());
m_data.pop();
return true;
}