2016-09-16 14 views
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 
    { 
    } 

あなたはより多くの情報が必要な場合は、私は

答えて

0

スレッドの安全性は、複数のスレッドが同時にアクセスする場合、データがどのように動作するかについての懸念でお知らせください。メソッドがスレッドセーフであると言われるときは、メソッド内容がスレッドセーフではないデータ構造へのアクセスを同期することを心配しているか、このメソッドで操作されるデータ構造は、本質的にスレッドセーフです。または両方。

メソッドがスレッドセーフであるかどうかは、操作しているT entityのメンバーがスレッドセーフであるかどうかによって決まります。 StringBuilder、配列、および参照渡しのものについては同じです。そのメソッドがpure functionの場合、スレッドセーフであると言えるでしょう。ただし、そのメソッドがいずれかのパラメータに副作用を引き起こしている場合、その変更がどのように実行されるかによって異なります。

関連する問題