Entity Frameworkクエリの一部であるWhere
節にそれらを渡すために、(LinqKitで)動的に生成される式をキャッシュします。式ツリーはスレッドセーフですか?
だから私は、複数のスレッドがApply
を呼び出し、その後、並行してこれらのクエリを実行するため
private static Expression<Func<T, bool>> _expression; // Gets a value at runtime
public IQueryable<T> Apply(IQueryable<T> query)
{
return query.Where(_expression); // Here _expression already has a value
}
のようなものが安全ですか? Expression<TDelegate>
クラスはスレッドセーフですか?
ドキュメントは、標準「このタイプのメンバー(Visual BasicではShared)すべてのパブリックstaticは、スレッドセーフです...」を与える
[スレッドセーフとは何ですか?](https://blogs.msdn.microsoft.com/ericlippert/2009/10/19/what-is-this-thing-あなたの呼び出しスレッドセーフ/) –
私にはあまりにも哲学的に見えます。 2つのパラレル問合せが同じ述語式オブジェクトをWhere部分に持つ場合、2つのパラレル問合せが機能するかどうかを知りたいだけです。 – user764754
AFAIK、式ツリーは不変であり、したがってスレッドセーフです。 –