bool internal_pop()

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;
        }