The code in the OP does use memory fences. Are you implying that their implementation are incorrect?
The code in the OP does use memory fences. Are you implying that their implementation are incorrect?
Generally if there's not a huge organization putting their reputation(and $$$) on the line there is going to be bugs.
Most of the time if you're going lockfree for performance reasons there's usually much large gains to be found in your cache usage or overall architecture.
This argument applies to any hard problem, so it doesn't seem valid. Whether there's an important bug in a project depends on someone's skill and on how much time they've dedicated to it, and it's hard to know how skilled or dedicated someone is.
In addition the error class is a mean one: doesn't happen often statistically and difficult to reproduce and as such can be very expensive to track down.
I have no issue with hard problems but the accountability for concurrency issues is gnarly. I've had driver issues look like concurrency bugs and concurrency bugs look like driver issues. If you feel the need to take on concurrency you better have the schedule budget for it or be willing to throw it away.
The entire problem of rolling your own security code is that you will never know if you messed it up.
For functional code this is only an issue with silent corrupted data.