我正在考虑现有的多线程C#应用程序,并注意到一些代码,如
public abstract class Task
{
protected IList<string> action;
...
public void Initialize (params)
...
几个特殊的“任务”派生自Task,一些Task方法修改“action”。所以在我的想法中,这不是线程安全的。我是对的吗?
感谢您的帮助,
奥利弗
答案 0 :(得分:3)
不,你不对。 action
是一个实例字段,因此Task
派生类的每个实例都有自己的action
副本。仅当action
为static
时才会出现问题。
为了澄清,您可以拥有许多Task
个派生对象。其中每一个都适用于单个线程。但是,您不希望多个线程访问相同的Task
实例,除非修改action
的代码受到某种同步的保护。