多线程与抽象受保护的成员?

时间:2013-06-26 13:14:14

标签: c# multithreading thread-safety threadpool

我正在考虑现有的多线程C#应用程序,并注意到一些代码,如

public abstract class Task
{
    protected IList<string> action;

...

    public void Initialize (params)
    ...

几个特殊的“任务”派生自Task,一些Task方法修改“action”。所以在我的想法中,这不是线程安全的。我是对的吗?

感谢您的帮助,

奥利弗

1 个答案:

答案 0 :(得分:3)

不,你不对。 action是一个实例字段,因此Task派生类的每个实例都有自己的action副本。仅当actionstatic时才会出现问题。

为了澄清,您可以拥有许多Task个派生对象。其中每一个都适用于单个线程。但是,您不希望多个线程访问相同的Task实例,除非修改action的代码受到某种同步的保护。