atomic_atomic_signal_fence
atomic_atomic_signal_fence (신호 펜스)
std::atomic_signal_fence는 같은 스레드에서 실행되는 신호 핸들러와 스레드 사이의 메모리 동기화 순서를 설정해요. CPU 명령을 내보내지 않아요.
출처: cppreference
본문
std::atomic_signal_fence는 <atomic> 헤더에 정의된 자유 함수예요.
extern "C" void atomic_signal_fence( std::memory_order order ) noexcept;
order가 지시하는 대로, 한 스레드와 같은 스레드에서 실행되는 신호 핸들러 사이에 비원자적 접근과 relaxed 원자적 접근의 메모리 동기화 순서를 설정해요. std::atomic_thread_fence와 동등하지만 메모리 순서를 위한 CPU 명령을 내보내지 않아요. 컴파일러의 명령 재배치만 막아요.
예제 (Example)
#include <atomic>
#include <csignal>
std::atomic<bool> flag{false};
extern "C" void handler(int)
{
std::atomic_signal_fence(std::memory_order_acquire);
// flag 관련 메모리 순서를 보장
}
int main()
{
std::signal(SIGINT, handler);
std::atomic_signal_fence(std::memory_order_release);
flag.store(true, std::memory_order_relaxed);
}