我有一个可以被多个线程访问的类的实例。多线程设计模式
这个类内部是一个[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