3 ms·
It doesn't it matter for this article whether there exist possible executions other than the one the author inquires about. The point of weak memory models is
by cvoss 1y ago
It doesn't it matter for this article whether there exist possible executions other than the one the author inquires about.
The point of weak memory models is to formally define the set of all possible legal executions of a concurrent program. This gets very complicated in a hurry because of the need to accommodate 1) hardware properties such as cache coherence and 2) desired compiler optimization opportunities that will want to reason over what's possible / what's guaranteed.
In this case, there was a conflict between a behavior of Power processors and an older C++ standard that meant that a correct compiler would have to introduce extra synchronization to prevent the forbidden behavior, thus impacting performance. The solution was to weaken the memory model of the standard in a very small way.
The article walks us through how exactly the newer standard permits the funny unintuitive execution of the example program.
The exercise is academic, sure. A lot of hard academic research has gone into this field to get it right. But it has to be that precise because the problems it solves are that subtle.
- thw_9a83c 1y agoYes, see: https://news.ycombinator.com/item?id=45091610 https://news.ycombinator.com/item?id=45091610 Originally, I was commenting, that the purpose of the article was initially unclear to me, since the order of thread execution cannot be determined anyway. I now understand that there was a corner case in the POWER and ARM architectures when mixing seq-cst and acquire-release operations on the same atomic variable. Thus, C++26 will be updated to allow more relaxed behavior in order to maintain performance. https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2018/p0668r5.html https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2018/p06...