我有一個可以被多個線程訪問的類的實例。多線程設計模式
這個類內部是一個[ThreadStatic]
變量,它存儲各種對象。
我現在需要我的班級的第二個實例,我希望它有一個單獨的對象存儲在裏面。
目前,同一個線程中的兩個實例將共享同一個對象存儲。我不想要這個。
我能想到的唯一的解決辦法是:
有一個靜態IDictionary<int, TObjectStore>
其中int
是線程ID,並通過一些方法或吸氣訪問此:
static TObjectStore ObjectStore {
get {
// create the instance here if its the first-access from this thread, with locking etc. for safety
return objectStore[Thread.CurrentThread.Id];
}
}
這個雖然問題當特定線程結束時,如何處理TObjectStore
?我認爲我正確地認爲,在我目前的實施中,GC會簡單地撿起它?
感謝
TIL關於'ThreadLocal <>' – 2012-01-12 13:54:18