我正在考虑现有的多线程C#应用程序,并注意到一些类似的代码
public abstract class Task
{
protected IList<string> action;
…
public void Initialize (params)
...
一些特殊的“任务”从任务派生而某些任务方法修改“动作”.所以在我看来,这不是线程安全的.我对吗 ?
谢谢你的帮助,
奥利维尔
解决方法:
不,你不对. action是一个实例字段,因此Task派生类的每个实例都将拥有自己的action副本.仅当动作是静态的时,这才可能成为问题.
为了明确起见,您可以具有许多任务派生的对象.这些中的每一个都适合单个线程.但是,除非有某种同步保护了修改操作的代码,否则您不希望多个线程访问同一Task实例.