Hi,
On May 31, 2014, at 2:13 PM, Sebastian Lackner wrote:
What do you think about the alternative (slightly slower, but much easier to verify) solution attached to this mail?
It looks good except for one issue. The assert() macro should never contain meaningful work. If NDEBUG is defined, the whole macro becomes (void)0. The expression is not evaluated.
As expected, the thread-safety of this approach is much more easily analyzed and looks good to me.
The ugliness for support for PowerPC is unfortunate, but probably still less ugly than the other approach with all necessary barriers inserted.
-Ken