>  기사  >  백엔드 개발  >  thread_local 변수는 블록 범위에서 암시적으로 정적입니까?

thread_local 변수는 블록 범위에서 암시적으로 정적입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-02 03:35:02376검색

Are thread_local Variables Implicitly Static in Block Scope?

thread_local을 사용하여 선언된 변수는 자동으로 정적으로 선언됩니까?

다음 코드 세그먼트는 한눈에 동일해 보입니다.

<code class="cpp">void f() {
    thread_local vector<int> V;
    // ...
}

void f() {
    static thread_local vector<int> V;
    // ...
}</code>

그러나 C Standard에서는 미묘한 차이가 드러납니다. 블록 범위로 thread_local 변수를 정의할 때 명시적으로 지정되지 않은 경우 정적 저장소 클래스 지정자가 암시됩니다. 이는 첫 번째 코드 세그먼트가 두 번째 코드 세그먼트와 동일하다는 것을 의미합니다.

유사한 정의에도 불구하고 정적 변수와 thread_local 변수는 크게 다릅니다. 정적 저장 기간이 있는 변수는 전체 프로그램과 연결되고, thread_local 변수는 개별 스레드와 연결됩니다. 각 스레드에는 thread_local 변수와 연관된 고유한 개체 또는 참조가 있습니다.

위 내용은 thread_local 변수는 블록 범위에서 암시적으로 정적입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.