amethyst / amethyst/rustrogueliketutorial
Multi-threading causes race condition when resolving hangover duration
- Vorherrschende Sprache
- Rust
- Sterne
- 970
- Forks
- 166
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
Running the project from the end of the tutorial.
initiative_system.rs:
Visually verified the code in my project matches the source code from the last chapter of the tutorial.
Stepped through with debugger and code executes as expected. The equipment changed component is added to the player entity and the status effect is deleted from the entities list.
encumbrance_system.rs:
Visually verified the relevant code in my project matches the source code from the last chapter of the tutorial.
Stepped through with debugger and code does not execute as expected. In the section where status effects are calculated, the "Hangover" status effect data is still being served from the datastore after the Status Effect entity has been deleted from the entities list in initiative_syste.rs (visually inspected in the debugger.)
Turning multi-threading off by commenting out the multi-threading pre-processor code in dispatcher/mod.rs fixes the problem.
When the player has an event that changes the attribute bonus again, the data in encumbrance_system.rs is serving the correct status modifiers (inspected in debugger).
It appears that multi-threading is causing the encumbrance system code to execute after the status effect entity is deleted but before the corresponding status effect modifies have been removed from the datastore.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Bewertung
Dieses Issue wurde noch nicht bewertet.