The old CoreSuspender requires processing from Core::Update to allow commands execute. But that causes issues if Core::Shutdown wants quarentee cleanup order with std:🧵:join. Fixing shutdown ordering adds too many branches to already fairly complex code. I decided to try to refactor CoreSuspender to use simpler locking locking using a std::recusive_muted as primary synchronization primitive. To help control when Core::Update unlocks the primary mutex there is std::contition_variable_any and std::atomic<size_t> queue lenght counter. The last state variable is std::atomic<std:🧵:id> that is used to keep track of owner thread for Core::IsSuspended query. This should be merged only just after a release to make sure that it gets maximum testing in develop branch before next release. Fixes #1066 |
||
|---|---|---|
| CMake | ||
| build | ||
| depends | ||
| dfhack-config | ||
| docs | ||
| library | ||
| package | ||
| plugins | ||
| reversing | ||
| scripts@56a209a9b4 | ||
| test | ||
| travis | ||
| .gitignore | ||
| .gitmodules | ||
| .travis.yml | ||
| .ycm_extra_conf.py | ||
| CMakeLists.txt | ||
| Contributing.rst | ||
| LICENSE.rst | ||
| README.html | ||
| README.md | ||
| conf.py | ||
| dfhack.init-example | ||
| index.rst | ||
| onLoad.init-example | ||
README.md
DFHack Readme
DFHack is a Dwarf Fortress memory access library, distributed with scripts and plugins implementing a wide variety of useful functions and tools.
The full documentation is available online here,
from the README.html page in the DFHack distribution, or as raw text in the ./docs folder.
If you're an end-user, modder, or interested in contributing to DFHack -
go read those docs.
If that's unclear or you need more help, try the Bay12 forums thread or the #dfhack IRC channel on freenode.