Use threadpool instead of new threads for DNS queries

This commit is contained in:
Howard Chu 2019-03-17 15:39:15 +00:00
parent 49afbd0c53
commit 8a97563a93
No known key found for this signature in database
GPG Key ID: FD2A70B44AB11BA7
1 changed files with 5 additions and 5 deletions

View File

@ -32,9 +32,9 @@
#include <stdlib.h> #include <stdlib.h>
#include "include_base_utils.h" #include "include_base_utils.h"
#include "common/threadpool.h"
#include <random> #include <random>
#include <boost/thread/mutex.hpp> #include <boost/thread/mutex.hpp>
#include <boost/thread/thread.hpp>
#include <boost/algorithm/string/join.hpp> #include <boost/algorithm/string/join.hpp>
#include <boost/optional.hpp> #include <boost/optional.hpp>
using namespace epee; using namespace epee;
@ -496,16 +496,16 @@ bool load_txt_records_from_dns(std::vector<std::string> &good_records, const std
size_t first_index = dis(gen); size_t first_index = dis(gen);
// send all requests in parallel // send all requests in parallel
std::vector<boost::thread> threads(dns_urls.size());
std::deque<bool> avail(dns_urls.size(), false), valid(dns_urls.size(), false); std::deque<bool> avail(dns_urls.size(), false), valid(dns_urls.size(), false);
tools::threadpool& tpool = tools::threadpool::getInstance();
tools::threadpool::waiter waiter;
for (size_t n = 0; n < dns_urls.size(); ++n) for (size_t n = 0; n < dns_urls.size(); ++n)
{ {
threads[n] = boost::thread([n, dns_urls, &records, &avail, &valid](){ tpool.submit(&waiter,[n, dns_urls, &records, &avail, &valid](){
records[n] = tools::DNSResolver::instance().get_txt_record(dns_urls[n], avail[n], valid[n]); records[n] = tools::DNSResolver::instance().get_txt_record(dns_urls[n], avail[n], valid[n]);
}); });
} }
for (size_t n = 0; n < dns_urls.size(); ++n) waiter.wait(&tpool);
threads[n].join();
size_t cur_index = first_index; size_t cur_index = first_index;
do do