C 11 지역 정적 변수 초기화: 스레드 안전성
C 11에서 지역 정적 변수 초기화의 스레드 안전성과 관련하여 수많은 논의가 있었습니다. 토론. 이 글은 현재 표준과 구현 상태를 바탕으로 포괄적인 답변을 제공하는 것을 목표로 합니다.
C 11 로컬 정적 변수의 스레드 안전성
C 11의 섹션 6.7 표준에서는 제어가 해당 선언을 처음으로 통과할 때 지역 정적 변수의 초기화가 발생한다고 명시적으로 명시하고 있습니다. 또한 초기화는 완료되면 완료된 것으로 간주되며, 초기화가 진행되는 동안 선언에 진입하는 동시 실행은 완료될 때까지 기다려야 합니다.
컴파일러에서의 구현
In 표준을 준수하는 GCC 4.7, Visual C 2011 및 Clang 3.0과 같은 널리 사용되는 컴파일러는 로컬에 대해 스레드로부터 안전한 초기화를 구현했습니다. 정적 변수. 이렇게 하면 제공된 예제의 lg와 같은 로컬 정적 변수의 생성자가 한 번만 실행되어 스레드로부터 안전한 초기화가 보장됩니다.
추가 고려 사항
초기화는 스레드로부터 안전하지만 참조를 통해 변수에 대한 후속 액세스로 확장되지 않는다는 점에 유의하는 것이 중요합니다. 따라서 표준에서는 초기화 단계 이후 스레드로부터 안전한 액세스에 대한 구체적인 보장을 지정하지 않으므로 초기화된 변수 사용 시 스레드 안전성을 보장하는 것이 여전히 필요합니다.
위 내용은 C 11의 로컬 정적 변수 초기화는 스레드로부터 안전합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!