Performs an atomic compare and exchange operation.
_Bool atomic_compare_exchange_strong(volatile A *object, C *expected, C desired);
This function atomically compares the value pointed to by object for equality with the value pointed to by expected.
If the comparison result is true, this function replaces the value pointed to by object with desired.
If the comparison result is false, this function updates the value pointed to by expected with the value pointed to by object.
Returns the result of the comparison.