Posted on 2009-03-11 22:39
S.l.e!ep.¢% 閱讀(736)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
MulThreads
線程本地存儲(chǔ)和線程同步的區(qū)別
線程本地存儲(chǔ)和線程同步是完全不同的,雖然他們都是為了解決多線程并發(fā)帶來(lái)的問(wèn)題,本地存儲(chǔ)要解決的問(wèn)題是多個(gè)線程要訪問(wèn)各自的全局變量,該變量在每個(gè)線程中的作用和用法完全相同,但是內(nèi)容不同.
而線程同步要解決的問(wèn)題是多個(gè)線程要訪問(wèn)同一個(gè)變量,共同維護(hù)該變量的內(nèi)容,但是要保持該變量的一致,正確.
?
下面介紹一下TLS:
每個(gè)線程都有自己的一個(gè)LPVOID型的數(shù)組,數(shù)組中的元素在每個(gè)線程中同一分配,譬如通過(guò)TlsAlloc()得到返回值3,那么每個(gè)線程中索引為3的數(shù)組都為inuse狀態(tài),將來(lái)創(chuàng)建的線程也是如此.但是他們的值只能在自己的線程中獲得和設(shè)置.