According to the C++ standard, the atomic object should satisfy the following requirements to be used in a signal handler:
- f is a non-static member function invoked on an object A, such that A.is_lock_free() yields true, or
- f is a non-member function, and for every pointer-to-atomic argument A passed to f, atomic_is_lock_free(A) yields true.
std::atomic_flag doesn't fit here formally (there is no is_lock_free method and atomic_is_lock_free can't be called with std::atomic_flag object). Though intuitively, it's very close (it's atomic and lock-free). Does it mean that std::atomic_flag can't be used in a signal handler, or it's just a C++ standard that needs clarification?