kill_dependency
kill_dependency (의존성 최적화 힌트)
의존 체인(dependency chain)을 끊어 컴파일러가 명령 수준 병렬성을 높일 수 있게 하는 최적화 힌트 함수예요. <atomic> 헤더, C++11부터.
출처: cppreference
본문
kill_dependency는 표현식의 의존성 화살표(dependency arrow)를 끊는 내장 함수예요.
template< class T >
T kill_dependency( T y ) noexcept;
std::memory_order_consume로 로드된 값을 전달할 때, 연관된 의존 체인을 끊어 줌으로써 컴파일러가 명령을 더 자유롭게 재배치·최적화할 수 있게 해요. 단, 잘못 쓰면 consume 순서 보장이 깨질 수 있으므로 신중히 사용해야 해요.
전형적인 용도는 consume 로드 결과에 의존하는 값을 반환할 때예요. 예를 들어 포인터를 consume 로드한 뒤, 그 포인터가 가리키는 값에 접근할 때 의존성이 필요한데, 그 값이 사실상 의존성을 요구하지 않는다면 kill_dependency로 체인을 끊을 수 있어요.
이 함수는 대부분의 응용 코드에서 거의 쓸 일이 없는 저수준 최적화 훅이에요. 보통의 경우 메모리 순서는 acquire/release 등을 쓰는 편이 이해하기 쉽고 안전해요.