这种通用扩展方法线程是否可以安全地记录?

时间:2016-09-16 08:53:10

标签: multithreading c#-4.0

我有以下扩展方法。我将所有值作为参数传递。我想知道如果多个线程可以访问此方法,它是否是一个线程安全的方法。

 public static string ConcatLogKeyWithExceptionMessage<T>(this T entity, string configuredLogKeys, bool logOnlySingleKey, string exceptionMessage, bool firstInvocation = true, StringBuilder logKeyBuilder = null, string[] configuredKeysArray = null) where T : class
    {
    }

如果您需要更多信息,请告诉我

1 个答案:

答案 0 :(得分:0)

当多个线程同时访问数据时,线程安全性是关于数据行为的关注点。什么时候说方法是线程安全的,这意味着方法内容要么关心同步对非线程安全数据结构的访问;使用该方法操纵的数据结构本质上是线程安全的;或两者兼而有之。

如果您的方法是否是线程安全的,则取决于您操作的T entity成员是否是线程安全的。 StringBuilder,数组以及通过引用传递的任何内容都是相同的。如果该方法是pure function,您可以说它是线程安全的。但是,如果该方法在任何参数中引起副作用,则取决于如何执行这些更改。