Aracılığıyla paylaş


thread

Microsoft'a Özgü

İş parçacığı genişletilmiş depolama sınıfı Değiştirici bir iş parçacığı yerel değişkeni bildirmek için kullanılır.

__declspec( thread ) declarator

Notlar

İş parçacığı yerel depolaması (TLS) bir çok iş parçacıklı işlemdeki her iş parçacığı için iş parçacığına özgü veri depolama ayıran mekanizmadır.İş parçacığı yerel depolaması konu başına veri tahsis etmek için kullanılan mekanizmadır ise standart çoklu iş parçacığı kullanan programlarda veri belirli bir işlemin tüm iş parçacıkları arasında paylaşılır.İş parçacığı kapsamlı bir açıklama için bkz: çoklu iş parçacığı kullanımı.

İş parçacığı yerel değişkenleri bildirimlerini kullanmanız gerekir genişletilmiş öznitelik sözdizimi ve __declspec anahtar sözcüğü ile iş parçacığı anahtar sözcüğü.Örneğin, aşağıdaki kod bir tamsayı iş parçacığı yerel değişkeni bildirir ve bunu bir değer ile başlatır:

__declspec( thread ) int tls_i = 1;

Bu yönergeler, iş parçacığı yerel nesneleri ve değişkenleri bildirirken uymanız gerekir:

  • Uygulayabileceğiniz iş parçacığı özniteliği sadece veri bildirimlerine ve tanımları ve üye işlevleri; olmayan sınıflar iş parçacığı İşlev bildirimlerinde veya tanımlarında kullanılamaz.

  • Kullanımı iş parçacığı özniteliği engelliyor olabilir Yükleme gecikmesi alır DLL**.**

  • Belirttiğiniz iş parçacığı özniteliği yalnızca veri öğeleri statik depolama süresi ile.Bu C++ sınıflarının genel veri nesnelerini (hem static ve extern), yerel statik nesneleri ve statik veri üyelerini içerir.Otomatik veri nesneleri ile bildiremezsiniz iş parçacığı özniteliği.

  • Kullanmanız gereken iş parçacığı öznitelik bildirimi ve bir iş parçacığı yerel nesnenin tanımını için bildirimler ve tanımı aynı dosyada ya da ayrı dosyalarda ortaya olup olmadığını.

  • Kullanamazsınız iş parçacığı özniteliği tür değiştiricisi olarak.

  • Yalnızca POD sınıfları kullanarak başlatılamaz __declspec(thread).Hiçbir nesne sınıfının bildiriminin bir parçası bildirilirse iş parçacığı özniteliği dikkate alınmaz.Örne?in:

    // declspec_thread.cpp
    // compile with: /LD
    __declspec(thread) class X
    {
    public:
       int I; 
    } x;   // x is a thread object
    
    X y;   // y is not a thread object
    
  • Kanal özniteliğini kullanan C++ nesne bildirimlerine izin verildiğinden, aşağıdaki iki örnek anlam olarak eşdeğerdir:

    // declspec_thread_2.cpp
    // compile with: /LD
    __declspec( thread ) class B {
    public:
       int data;
    } BObject;   // BObject declared thread local.
    
    class B2 {
    public:
       int data;
    };
    __declspec( thread ) B2 BObject2;   // BObject2 declared thread local.
    
  • Standart C, kendilerine başvuru içeren ifadelerle nesnelerin veya değişkenlerin başlangıcına izin verir, ancak sadece statik olmayan uzantı nesneleri için.C++ normalde kendilerine bir nesnenin kendisine bir başvuru içeren ifadelerle ile izin verir, ancak bu tür bir başlatma iş parçacığı yerel nesneleriyle izin verilmez.Örne?in:

    // declspec_thread_3.cpp
    // compile with: /LD
    #define Thread __declspec( thread )
    int j = j;   // Okay in C++; C error
    Thread int tls_i = sizeof( tls_i );   // Okay in C and C++
    

    Başlatılan nesneyi içeren sizeof ifadesinin kendisi de bir başvurudan oluşmadığından ve hem C'de hem de C++'ta izinli olduğuna dikkat edin.

END Microsoft'a Özgü

Ayrıca bkz.

Başvuru

__declspec

C++ Anahtar Sözcükleri

Kavramlar

İş Parçacığı Yerel Depolaması (TLS)