diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2021-10-07 15:32:51 -0400 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2021-10-07 15:32:51 -0400 |
commit | 623ac79120a417ec445ce5c106a907fe46734309 (patch) | |
tree | d91b262dae1d4416d71ce78b7089aa1603961dc0 /indra/llcommon/llthread.cpp | |
parent | 6e06d1db6045df2e4961243f379c4d7695a8190d (diff) |
SL-16024: Add LL::WorkQueue for passing work items between threads.
A typical WorkQueue has a string name, which can be used to find it to post
work to it. "Work" is a nullary callable.
WorkQueue is a multi-producer, multi-consumer thread-safe queue: multiple
threads can service the WorkQueue, multiple threads can post work to it.
Work can be scheduled in the future by submitting with a timestamp. In
addition, a given work item can be scheduled to run on a recurring basis.
A requesting thread servicing a WorkQueue of its own, such as the viewer's
main thread, can submit work to another WorkQueue along with a callback to be
passed the result (of arbitrary type) of the first work item. The callback is
posted to the originating WorkQueue, permitting safe data exchange between
participating threads.
Methods are provided for different kinds of servicing threads. runUntilClose()
is useful for a simple worker thread. runFor(duration) devotes no more than a
specified time slice to that WorkQueue, e.g. for use by the main thread.
Diffstat (limited to 'indra/llcommon/llthread.cpp')
0 files changed, 0 insertions, 0 deletions