nghttpx: Fast backend replacement on multi thread environment

This commit is contained in:
Tatsuhiro Tsujikawa 2016-06-16 23:04:06 +09:00
parent 50c9c3358a
commit 96218a1078
1 changed files with 8 additions and 4 deletions

View File

@ -162,11 +162,15 @@ void Worker::replace_downstream_config(
downstreamconf_ = downstreamconf;
downstream_addr_groups_ = std::vector<std::shared_ptr<DownstreamAddrGroup>>(
downstreamconf->addr_groups.size());
// Making a copy is much faster with multiple thread on
// backendconfig API call.
auto groups = downstreamconf->addr_groups;
for (size_t i = 0; i < downstreamconf->addr_groups.size(); ++i) {
auto &src = downstreamconf->addr_groups[i];
downstream_addr_groups_ =
std::vector<std::shared_ptr<DownstreamAddrGroup>>(groups.size());
for (size_t i = 0; i < groups.size(); ++i) {
auto &src = groups[i];
auto &dst = downstream_addr_groups_[i];
dst = std::make_shared<DownstreamAddrGroup>();