void add_continuations()

in Source/Shared/arcana/threading/internal/internal_task.h [184:216]


            void add_continuations(gsl::span<continuation_payload> continuations)
            {
                if (continuations.empty())
                    return;

                bool runit = false;

                {
                    std::lock_guard<std::mutex> guard{ m_mutex };

                    if (m_taskRedirect)
                    {
                        m_taskRedirect->add_continuations(continuations, m_taskRedirect);
                    }
                    else
                    {
                        if (m_completed)
                        {
                            runit = true;
                        }
                        else
                        {
                            internal_add_continuations(continuations);
                        }
                    }
                }

                if (runit)
                {
                    for (auto& continuation : continuations)
                        continuation.run();
                }
            }