私は異なるコンストラクタでインスタンス化できるC#クラスを持っていますが、それらのパラメータでしか動作しない他のクラスからも呼び出すことができる静的ヘルパメソッドがいくつか含まれています。静的でないクラスのスレッドのC#静的メソッドは安全ですか?
私は、異なるスレッドからそのようなメソッドへの並行呼び出しがスレッドセーフであるかどうか、つまり、静的メソッド内の変数がcall2によって変更される可能性がありますか?
public class AwesomeClass
{
/* constructors and stuff */
public static bool HelperMethod(object o1)
{
string someString = "";
Func<object, string> doSomething = (o) => {
string someOtherString == null;
if (someString.Length == 0)
{
/* time consuming process using o... frequently
changes someString and someOtherString */
}
return someOtherString;
};
return doSomething(o1).Length > 0 && someString.Length < 10;
}
}
例のsomeString
はdoSomething
はまだスレッド1のために働いている間、私はトラブルになるだろうHelperMethod
を呼び出すスレッド2によって変更することができれば。
'someOtherString'はローカル変数です。話すスレッド安全性については何もありません。別のスレッドは 'someOtherString'の新しいインスタンスを作成します。したがって、実際には共有リソースはありません。 – user3185569
どこにも渡さないとFuncを作成する目的は何ですか? – Jecoms
私は自分の質問を説明するために作った例にすぎません...意味を成すものではありません。 –