14

MongoClientMongoServerMongoDatabaseおよびのドキュメントではMongoCollection<T>、それらはスレッドセーフであると言われています。

質問: それは、(たとえば) クラス内にそれらの静的フィールドを持ち、任意のTask/からアクセスできるということThreadですか?

お気に入り:

public static MongoClient Client = new MongoClient(Properties.Settings.Default.MongoConnStr);
public static MongoServer Server = Client.GetServer();
public static MongoDatabase DraftDB = Server.GetDatabase("draftdb");
public static MongoCollection<MyDoc> Docs = Program.DraftDB.GetCollection<Location>("mydocs");

特にMongoCollection<T>; var cursor = Docs.Find(query).SetLimit(50);のようなものがミューテーションを実行しないことを確認したいMongoCollection<T>(正確には静的な状態です)。

4

1 に答える 1

12

このページから、MongoServer、MongoDatabase、MongoClient、MongoCollection、および MongoGridFS がスレッドセーフであることがわかります。MongoCursor は特にスレッドセーフではありません。

これは、「状態」の変更を心配することなく、複数のタスクから安全にアクセスできることを意味しますが、値を設定または変更する方法には注意が必要です。

具体的には、コレクション(カーソルオブジェクトを返す)をクエリしても、MongoCollection オブジェクトは変更されません。

于 2013-06-17T01:33:34.833 に答える