Explore thread synchronization in the Arm memory model
Introduction
Thread Synchronization, Arm Memory Model, and Tools
Herd7 and Litmus7 Test Primer
Thread Synchronization Examples
Additional Resources
Next Steps
Explore thread synchronization in the Arm memory model
Who is this for?
This is an advanced topic for developers seeking practical ways to test thread synchronization approaches in the Arm memory model.
What will you learn?
After completing this Learning Path, you'll be able to perform the following tasks:
- Test thread synchronization assembly snippets against the formal definition of the Arm memory model.
- Test thread synchronization assembly snippets on Arm hardware.
- Compare the results of different thread synchronization approaches.
Prerequisites
Before starting, you'll need the following prerequisites:
- An understanding of memory consistency models (such as sequential consistency, weak ordering, relaxed consistency, and processor consistency)
- An understanding of thread synchronization
- Familiarity with Arm assembly language, and the ability to find relevant information on Arm assembly instructions
- Familiarity with general-purpose registers
- Familiarity with memory barriers, including acquire and release semantics
Summary
This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.
LDAR and STLR examples.Frequently asked questions
These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.
LDAR for load-acquire and STLR for store-release. Compare the examples to see how these instructions enforce acquire-release ordering.-s option. For example, run litmus7 ./test.litmus -s 5000000 to execute five million iterations instead of the default one million.