Должен ли я вручную блокировать mongocxx :: pool при приобретении соединения?MongoDB C++: Есть ли mongocxx :: pool thread safe?
i.e Это безопасно? (Например, скопирован с сайта Монго)
mongocxx::instance instance{};
mongocxx::pool pool {mongocxx::uri{}};
using mongocxx::pool::entry = std::unique_ptr<client, std::function<void (client*)>>
auto threadfunc = [](mongocxx::client &client, stdx::string_view dbname) {
client[dbname]["col"].insert({});
}
// don't even bother sharing clients. Just give each thread its own,
std::thread([]() {
// pool.acquire() returns a mongo::pool::entry type
mongocxx::client *c= pool.acquire().get();
threadfunc(*c, "db1");
threadfunc(*c, "db2");
});
std::thread([]() {
mongocxx::client *c = pool.acquire().get();;
threadfunc(*c, "db2");
threadfunc(*c, "db1");
});
@ xcorat вежливый, чтобы продвигать и/или принимать лучшие ответы на заданные вами вопросы. – acm
geez! Я просто прочитал ответ: p (jk, но да, я просто прочитал его, спасибо :) – xcorat
И да, я в конечном итоге изменил свой код на то, как вы его исправили, и подумал, что я отредактировал вопрос, но я думаю, «т. Еще раз спасибо! – xcorat