其他分享
首页 > 其他分享> > 带有抽象受保护成员的多线程?

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

作者:互联网

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

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

    public void Initialize (params)
    ...

一些特殊的“任务”从任务派生而某些任务方法修改“动作”.所以在我看来,这不是线程安全的.我对吗 ?

谢谢你的帮助,

奥利维尔

解决方法:

不,你不对. action是一个实例字段,因此Task派生类的每个实例都将拥有自己的action副本.仅当动作是静态的时,这才可能成为问题.

为了明确起见,您可以具有许多任务派生的对象.这些中的每一个都适合单个线程.但是,除非有某种同步保护了修改操作的代码,否则您不希望多个线程访问同一Task实例.

标签:multithreading,thread-safety,threadpool,c
来源: https://codeday.me/bug/20191123/2065106.html