summaryrefslogtreecommitdiff
path: root/indra/llcommon/workqueue.cpp
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2021-10-26 11:49:53 -0400
committerNat Goodspeed <nat@lindenlab.com>2021-10-26 11:49:53 -0400
commite6eebea8da545350f6684c191c633dd2fbc6f6f1 (patch)
treeab5885d5a0b65436964b5dbe8ddc9051d1723bac /indra/llcommon/workqueue.cpp
parent023d39963e850356e1af6eec7f857e2534ce8d38 (diff)
SL-16220: Change WorkQueue::runOn() to waitForResult().
In addition to the name making the blocking explicit, we changed the signature: instead of specifying a target WorkQueue on which to run, waitForResult() runs the passed callable on its own WorkQueue. Why is that? Because, unlike postTo(), we do not require a handshake between two different WorkQueues. postTo() allows running arbitrary callback code, setting variables or whatever, on the originating WorkQueue (presumably on the originating thread). waitForResult() synchronizes using Promise/Future, which are explicitly designed for cross-thread communication. We need not call set_value() on the originating thread, so we don't need a postTo() callback lambda.
Diffstat (limited to 'indra/llcommon/workqueue.cpp')
-rw-r--r--indra/llcommon/workqueue.cpp7
1 files changed, 1 insertions, 6 deletions
diff --git a/indra/llcommon/workqueue.cpp b/indra/llcommon/workqueue.cpp
index f7ffc8233c..ac3086aac5 100644
--- a/indra/llcommon/workqueue.cpp
+++ b/indra/llcommon/workqueue.cpp
@@ -26,11 +26,6 @@
using Mutex = LLCoros::Mutex;
using Lock = LLCoros::LockType;
-struct NotOnDftCoro: public LLException
-{
- NotOnDftCoro(const std::string& what): LLException(what) {}
-};
-
LL::WorkQueue::WorkQueue(const std::string& name):
super(makeName(name))
{
@@ -148,6 +143,6 @@ void LL::WorkQueue::checkCoroutine(const std::string& method)
// string. See also LLCoros::logname().
if (LLCoros::getName().empty())
{
- LLTHROW(NotOnDftCoro("Do not call " + method + " from a thread's default coroutine"));
+ LLTHROW(Error("Do not call " + method + " from a thread's default coroutine"));
}
}