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);
}

더 알아보기 (Learn more)

cppreference