<feed xmlns='http://www.w3.org/2005/Atom'>
<title>viewer.git/indra/llcommon/tests/workqueue_test.cpp, branch cef_147</title>
<subtitle>Megapahit's fork of the Second Life viewer.
</subtitle>
<id>https://megapahit.org/viewer.git/atom?h=cef_147</id>
<link rel='self' href='https://megapahit.org/viewer.git/atom?h=cef_147'/>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/'/>
<updated>2024-04-29T04:56:09Z</updated>
<entry>
<title>#824 Process source files in bulk: replace tabs with spaces, convert CRLF to LF, and trim trailing whitespaces as needed</title>
<updated>2024-04-29T04:56:09Z</updated>
<author>
<name>Andrey Lihatskiy</name>
<email>alihatskiy@productengine.com</email>
</author>
<published>2024-04-29T04:43:28Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=1b68f71348ecf3983b76b40d7940da8377f049b7'/>
<id>urn:sha1:1b68f71348ecf3983b76b40d7940da8377f049b7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'origin/main' into DRTVWR-559</title>
<updated>2023-10-25T23:12:13Z</updated>
<author>
<name>Brad Linden</name>
<email>brad@lindenlab.com</email>
</author>
<published>2023-10-25T20:22:13Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=673b3309dde153fdadf7559bd16a5bb6db4723a1'/>
<id>urn:sha1:673b3309dde153fdadf7559bd16a5bb6db4723a1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>SL-18837: Bump the granularity of WorkQueue timing tests.</title>
<updated>2023-06-05T15:28:41Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2023-06-05T15:28:41Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=045342ba29aae186e13c711bd4dd84377d4a7e43'/>
<id>urn:sha1:045342ba29aae186e13c711bd4dd84377d4a7e43</id>
<content type='text'>
On a low-powered GitHub Mac runner, the system doesn't wake up as soon as it
should, and we get spurious "too late" errors. Try a bigger time increment.
</content>
</entry>
<entry>
<title>SL-18809: Add WorkSchedule; remove timestamps from WorkQueue.</title>
<updated>2022-12-09T18:21:45Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2022-12-09T18:21:45Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=fc424a0db90fd2d2e44e85a19750ad6eaa57b28a'/>
<id>urn:sha1:fc424a0db90fd2d2e44e85a19750ad6eaa57b28a</id>
<content type='text'>
For work queues that don't need timestamped tasks, eliminate the overhead of a
priority queue ordered by timestamp. Timestamped task support moves to
WorkSchedule. WorkQueue is a simpler queue that just waits for work.

Both WorkQueue and WorkSchedule can be accessed via new WorkQueueBase API. Of
course the WorkQueueBase API doesn't deal with timestamps, but a WorkSchedule
can be accessed directly to post timestamped tasks and then handled normally
(e.g. by ThreadPool) to run them.

Most ThreadPool functionality migrates to new ThreadPoolBase class, with
template subclass ThreadPoolUsing&lt;WorkQueue&gt; or ThreadPoolUsing&lt;WorkSchedule&gt;
depending on need. ThreadPool is now an alias for ThreadPoolUsing&lt;WorkQueue&gt;.
Importantly, ThreadPoolUsing::getQueue() delivers a reference to the specific
queue subclass type, so you can post timestamped tasks on a queue retrieved
from ThreadPoolUsing&lt;WorkSchedule&gt;::getQueue().

Since ThreadPool is no longer a simple class but an alias for a particular
template specialization, introduce threadpool_fwd.h to forward-declare it.

Recast workqueue_test.cpp to exercise WorkSchedule, since some of the tests
are time-based. A future todo would be to exercise each applicable test with
both WorkQueue and WorkSchedule.
</content>
</entry>
<entry>
<title>SL-16094: Fix WorkQueue test for correct behavior of runFor().</title>
<updated>2021-11-24T17:56:48Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2021-11-24T17:56:48Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=04ebc11a2d8a2e59abda5061e35e504fc30504d2'/>
<id>urn:sha1:04ebc11a2d8a2e59abda5061e35e504fc30504d2</id>
<content type='text'>
Turns out that one of our WorkQueue integration tests was relying on the
incorrect runFor() behavior that we just fixed, so the test broke. Now that
runFor() doesn't wait around for work to be posted, use an explicit wait loop
instead.

To support this, add LLCond::get(functor), where functor must accept a const
reference to the stored data. This new get() returns whatever the functor
returns, allowing a caller to peek at the stored data.

Also use universal references for all remaining LLCond functor arguments.
</content>
</entry>
<entry>
<title>DRTVWR-546, SL-16220, SL-16094: Undo previous glthread branch revert.</title>
<updated>2021-11-24T15:47:54Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2021-11-24T15:47:54Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=0b066539fe68dc5750900c3452189645c40adb45'/>
<id>urn:sha1:0b066539fe68dc5750900c3452189645c40adb45</id>
<content type='text'>
Reverting a merge is sticky: it tells git you never want to see that branch
again. Merging the DRTVWR-546 branch, which contained the revert, into the
glthread branch undid much of the development work on that branch. To restore
it we must revert the revert.

This reverts commit 029b41c0419e975bbb28454538b46dc69ce5d2ba.
</content>
</entry>
<entry>
<title>Revert "SL-16220: Merge branch 'origin/DRTVWR-546' into glthread"</title>
<updated>2021-11-15T16:25:35Z</updated>
<author>
<name>Dave Houlton</name>
<email>euclid@lindenlab.com</email>
</author>
<published>2021-11-15T16:25:35Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=029b41c0419e975bbb28454538b46dc69ce5d2ba'/>
<id>urn:sha1:029b41c0419e975bbb28454538b46dc69ce5d2ba</id>
<content type='text'>
This reverts commit 5188a26a8521251dda07ac0140bb129f28417e49, reversing
changes made to 819088563e13f1d75e048311fbaf0df4a79b7e19.
</content>
</entry>
<entry>
<title>SL-16220: Add tests for WorkQueue::waitForResult(), void &amp; non-void.</title>
<updated>2021-10-27T19:31:54Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2021-10-27T19:31:54Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=8b16ecb9cfb4917fe38e4e5b0e4f40a23dd4ffbf'/>
<id>urn:sha1:8b16ecb9cfb4917fe38e4e5b0e4f40a23dd4ffbf</id>
<content type='text'>
</content>
</entry>
<entry>
<title>SL-16220: Specialize WorkQueue for callable with void return.</title>
<updated>2021-10-25T19:55:49Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2021-10-25T19:55:49Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=e7b8c27741201528bf78f95c96ba820833923dab'/>
<id>urn:sha1:e7b8c27741201528bf78f95c96ba820833923dab</id>
<content type='text'>
Add a test exercising this feature.
</content>
</entry>
<entry>
<title>SL-16024: Defend against two threads making "anonymous" WorkQueues.</title>
<updated>2021-10-07T20:45:15Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2021-10-07T20:45:15Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=c585ddb75e383cdd994d0d99fed8f2de8f955e3c'/>
<id>urn:sha1:c585ddb75e383cdd994d0d99fed8f2de8f955e3c</id>
<content type='text'>
Also make workqueue_test.cpp more robust.
</content>
</entry>
</feed>
