With the relaxed semantics, we have no synchronizations and ordering constraints on atomic operations.
But we can improve and further improve the acquire-release semantics of the last post. Why should x be atomic? There is no reason. That was my first but incorrect assumption. See why?
With the acquire-release semantics, we break the sequential consistency. In the acquire-release semantics, synchronization occurs between atomic operations on the same atomic and not between threads.
With atomic data types, you can tailor your program to your needs and optimize it. But now we are in the domain of multithreading experts.
The easiest way to solve the undefined behaviour in the post Ongoing Optimization: Unsynchronized access is, to use a lock.
I described my challenge in the last post. Let's 's start with our process of ongoing optimization. To be sure, I verify my reasoning with CppMem. I once made a big mistake in my presentation at Meeting C++ 2014.
Now it's time to put the theory into practice. The job is relatively easy. A small program should undergo ongoing optimization.
Hunting
Today 1736
Yesterday 4344
Week 38614
Month 18860
All 12097069
Currently are 152 guests and no members online
Kubik-Rubik Joomla! Extensions
Read more...
Read more...