English 中文(简体)
翻新设计模式
原标题:Multithreading design pattern

我有一个班子,可以由多个校对。

在这一类别中,有<条码>[现成]变量,储存各种物体。

我现在需要我的班子的二例,我希望在会场内有一个单独的物体库。

Currently, two instances in the same thread will share the same object store. I do not want this.

我认为的唯一解决办法是:

具有静态的<代码>IDictionary<int,bjectStore>,int is the thread 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];
    }
}

The problem with this though is how do I dispose of the TObjectStore for a particular thread when it ends? I think im right in assuming that with my current implementation, the GC will simply pick it up?

增 编

最佳回答

any 例中,一个静态的现场确实没有,因此,我认为现在需要一个实例。 在此情况下,请设<代码>。 校对;T>:

ThreadLocal<SomeType> store = new ThreadLocal<SomeType>( () => {
    // initializer, used when a new thread accesses the value
    return ...
});

该储存将随地进行收集,任何内容(只要在别的地方被提及,显然都是这样)。

问题回答

仅向Marc swer