AsyncRequestManager uses a single QMutex m_mutex to guard its whole shared state — the map of tracked requests, the pending queue, everything. Every operation that touches async request state takes this same lock: submit(), dequeueNext(), markRunning(), markCompleted(), cancelJson(), and now getStatusJson(), getResultJson(), listJson().
Because it's one mutex, only one of these can run at a time, across every HTTP worker thread and the main
thread's own async processing loop.
AsyncRequestManager uses a single QMutex m_mutex to guard its whole shared state — the map of tracked requests, the pending queue, everything. Every operation that touches async request state takes this same lock: submit(), dequeueNext(), markRunning(), markCompleted(), cancelJson(), and now getStatusJson(), getResultJson(), listJson().
Because it's one mutex, only one of these can run at a time, across every HTTP worker thread and the main
thread's own async processing loop.