StringBuilder类的线程安全性

Fat*_*ror 1 c# stringbuilder multithreading thread-safety

class Test {
    public string GetData() {
        StringBuilder sb = new StringBuilder();
        sb.Append("aassffss");
        sb.Append("bbhhhhh");
        return sb.ToString();
    }
}
// calling from multithreads,as below, 
// from each thread i will create new 
// instance and call method.

Test t = new Test(); 
t.GetData();
Run Code Online (Sandbox Code Playgroud)

根据MSDN.类的任何实例成员StringBuilder都不是线程安全的.所以我相信这不是线程安全的.我对么?

Dav*_*nan 7

此代码是线程安全的,因为线程之间没有共享实例.

如果您在多个线程之间共享单个实例,则会遇到问题.然后,如果您有来自不同线程的多个实例方法调用,则在同一实例上,代码将是不安全的.

  • @FatalError你正在查看`GetData()`方法,并且似乎认为:当从不同的线程执行该方法时,它们访问同一个实例.但他们没有.每次调用此方法时,都会创建_new instance_.因此,线程之间不会共享StringBuilder的实例,就像David解释的那样. (2认同)