我有一个可以被多个线程访问的类实例。
这个类里有一个 [ThreadStatic] 变量,它存储着各种对象。
现在我需要第二个实例,我希望它有一个独立的对象存储。
目前,在同一线程中的两个实例将共享相同的对象存储。我不希望出现这种情况。
我能想到的唯一解决办法是:
建立一个 static IDictionary,其中 int 是线程 ID,并通过某个方法或 getter 访问它:
这样做的问题在于,当一个线程结束时,我该如何处理特定线程的
谢谢。
这个类里有一个 [ThreadStatic] 变量,它存储着各种对象。
现在我需要第二个实例,我希望它有一个独立的对象存储。
目前,在同一线程中的两个实例将共享相同的对象存储。我不希望出现这种情况。
我能想到的唯一解决办法是:
建立一个 static IDictionary,其中 int 是线程 ID,并通过某个方法或 getter 访问它:
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会自动回收它,我的想法正确吗?谢谢。