Using Sync with multiple threads is trickier than with coroutines. In particular, Sync::bump() was racy (get() and set() as two different operations), and threads were proceeding when they should have waited. Fortunately LLCond, on which Sync is based, already supports atomic update operations. Use that for bump(). But to nail things down even more specifically, add set(n) to complement yield_until(n). Using those methods, there should be no ambiguity about which call in one thread synchronizes with which call in the other thread. |
||
|---|---|---|
| debian | ||
| doc | ||
| etc | ||
| indra | ||
| scripts | ||
| .clang-format | ||
| .gitignore | ||
| .hgtags | ||
| BuildParams | ||
| README.md | ||
| autobuild.xml | ||
| build.sh | ||
README.md
Second Life Viewer
This project manages the source code for the Second Life Viewer.
This source is available as open source; for details on licensing, see the licensing page on the Second Life wiki
For information on how to use and contribute to this, see the open source portal on the wiki.
To download the current default version, visit the download page. For even newer versions try the Alternate Viewers page