Penyimpanan Lokal Utas
Semua utas proses berbagi ruang alamat virtualnya. Variabel lokal fungsi unik untuk setiap utas yang menjalankan fungsi. Namun, variabel statis dan global dibagikan oleh semua utas dalam proses. Dengan penyimpanan lokal utas (TLS), Anda dapat menyediakan data unik untuk setiap utas yang dapat diakses proses menggunakan indeks global. Satu utas mengalokasikan indeks, yang dapat digunakan oleh utas lain untuk mengambil data unik yang terkait dengan indeks.
Konstanta TLS_MINIMUM_AVAILABLE menentukan jumlah minimum indeks TLS yang tersedia di setiap proses. Minimum ini dijamin setidaknya 64 untuk semua sistem. Jumlah maksimum indeks per proses adalah 1.088.
Ketika utas dibuat, sistem mengalokasikan array nilai LPVOID untuk TLS, yang diinisialisasi ke NULL. Sebelum indeks dapat digunakan, indeks harus dialokasikan oleh salah satu utas. Setiap utas menyimpan datanya untuk indeks TLS di slot TLS dalam array. Jika data yang terkait dengan indeks akan sesuai dengan nilai LPVOID, Anda dapat menyimpan data langsung di slot TLS. Namun, jika Anda menggunakan sejumlah besar indeks dengan cara ini, lebih baik mengalokasikan penyimpanan terpisah, mengonsolidasikan data, dan meminimalkan jumlah slot TLS yang digunakan.
Diagram berikut mengilustrasikan cara kerja TLS. Untuk contoh kode yang mengilustrasikan penggunaan penyimpanan lokal utas, lihat Menggunakan Thread Local Storage.
Proses ini memiliki dua utas, Thread 1 dan Thread 2. Ini mengalokasikan dua indeks untuk digunakan dengan TLS, gdwTlsIndex1 dan gdwTlsIndex2. Setiap utas mengalokasikan dua blok memori (satu untuk setiap indeks) untuk menyimpan data, dan menyimpan pointer ke blok memori ini di slot TLS yang sesuai. Untuk mengakses data yang terkait dengan indeks, utas mengambil penunjuk ke blok memori dari slot TLS dan menyimpannya di variabel lokal lpvData.
Sangat ideal untuk menggunakan TLS di pustaka tautan dinamis (DLL). Misalnya, lihat Menggunakan Penyimpanan Lokal Utas di Pustaka Dynamic Link.
Topik terkait
-
Menggunakan Penyimpanan Lokal Utas