Aracılığıyla paylaş


İş Parçacığı Yerel Depolama

Bir işlemin tüm iş parçacıkları sanal adres alanını paylaşır. bir işlevin yerel değişkenleri, işlevi çalıştıran her iş parçacığı için benzersizdir. Ancak, statik ve genel değişkenler işlemdeki tüm iş parçacıkları tarafından paylaşılır. iş parçacığı yerel depolama (TLS) ile, genel dizin kullanarak işlemin erişebileceği her iş parçacığı için benzersiz veriler sağlayabilirsiniz. Bir iş parçacığı, diğer iş parçacıkları tarafından dizinle ilişkili benzersiz verileri almak için kullanılabilen dizini ayırır.

Sabit TLS_MINIMUM_AVAILABLE her işlemde kullanılabilir en az TLS dizini sayısını tanımlar. Bu minimum değerin tüm sistemler için en az 64 olması garanti edilir. İşlem başına dizin sayısı üst sınırı 1.088'dir.

İş parçacıkları oluşturulduğunda sistem, TLS için NULL olarak başlatılan LPVOID değerleri dizisi ayırır. Bir dizinin kullanılabilmesi için önce iş parçacıklarından biri tarafından ayrılması gerekir. Her iş parçacığı, bir TLS dizini için verilerini dizideki TLS yuvası depolar. Dizinle ilişkili veriler LPVOID değerine sığacaksa, verileri doğrudan TLS yuvasında depolayabilirsiniz. Ancak, bu şekilde çok sayıda dizin kullanıyorsanız, ayrı depolama alanı ayırmak, verileri birleştirmek ve kullanımdaki TLS yuvalarının sayısını en aza indirmek daha iyidir.

Aşağıdaki diyagramda TLS'nin nasıl çalıştığı gösterilmektedir. İş parçacığı yerel depolamanın kullanımını gösteren bir kod örneği için bkz. İş Parçacığı Yerel Depolama kullanma.

T L S işleminin nasıl çalıştığını gösteren Diyagramı.

İşlemin iki iş parçacığı vardır: İş Parçacığı 1 ve İş Parçacığı 2. TLS ile kullanılmak üzere iki dizin ayırır: gdwTlsIndex1 ve gdwTlsIndex2. Her iş parçacığı, verilerin depolandığı iki bellek bloğu (her dizin için bir tane) ayırır ve bu bellek bloklarının işaretçilerini ilgili TLS yuvalarında depolar. bir dizinle ilişkili verilere erişmek için, iş parçacığı TLS yuvasından bellek bloğu işaretçisini alır ve lpvData yerel değişkeninde depolar.

TLS'yi dinamik bağlantı kitaplığında (DLL) kullanmak idealdir. Örnek için bkz. Dinamik Bağlantı Kitaplığında İş Parçacığı Yerel Depolaması Kullanma.

İş Parçacığı Yerel Depolama (Visual C++)

İş Parçacığı Yerel Depolama Kullanarak

Dinamik Bağlantı Kitaplığında İş Parçacığı Yerel Depolaması Kullanma