diff options
| author | Erik Kundiman <erik@megapahit.org> | 2026-09-25 14:19:54 +0800 |
|---|---|---|
| committer | Erik Kundiman <erik@megapahit.org> | 2026-09-25 14:19:54 +0800 |
| commit | 8c401efcbfa09eefb7c0cab20afb68eb5722d858 (patch) | |
| tree | 3d385975f839414b88dae737a850d05f64287cd2 /indra/llcommon | |
| parent | f23f30b19df8976908886de492df2fcba3b8c14a (diff) | |
| parent | 546782857fef92f1c745d58e30275138ee1e49f8 (diff) | |
Merge tag 'Second_Life_Release#54678285-26.4' into 26.4
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/workqueue.cpp | 6 | ||||
| -rw-r--r-- | indra/llcommon/workqueue.h | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/indra/llcommon/workqueue.cpp b/indra/llcommon/workqueue.cpp index fbd92d089e..4f19ab2cc2 100644 --- a/indra/llcommon/workqueue.cpp +++ b/indra/llcommon/workqueue.cpp @@ -319,6 +319,12 @@ bool LL::WorkQueue::tryPost(const Work& callable) } } +bool LL::WorkQueue::postToMainLoop(const Work& work) +{ + auto queue = getInstance("mainloop"); + return queue && queue->tryPost(work); +} + LL::WorkQueue::Work LL::WorkQueue::pop_() { return mQueue.pop(); diff --git a/indra/llcommon/workqueue.h b/indra/llcommon/workqueue.h index 69f3286c1b..322baa36e6 100644 --- a/indra/llcommon/workqueue.h +++ b/indra/llcommon/workqueue.h @@ -265,6 +265,16 @@ namespace LL */ bool tryPost(const Work&) override; + /** + * @brief Post work to the well-known main-loop queue without blocking + * @return true if posted, false if the main loop is gone or its + * queue is closed/full + * + * For callers on a secondary thread that must not block waiting for + * the main thread (e.g. a websocket I/O thread). + */ + static bool postToMainLoop(const Work& work); + private: using Queue = LLThreadSafeQueue<Work>; Queue mQueue; |
