aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--host/lib/usrp/mpmd/mpmd_find.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/host/lib/usrp/mpmd/mpmd_find.cpp b/host/lib/usrp/mpmd/mpmd_find.cpp
index b2471d30c..26230e396 100644
--- a/host/lib/usrp/mpmd/mpmd_find.cpp
+++ b/host/lib/usrp/mpmd/mpmd_find.cpp
@@ -13,6 +13,7 @@
#include <uhd/transport/if_addrs.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/asio.hpp>
+#include <future>
using namespace uhd;
using namespace uhd::mpmd;
@@ -176,8 +177,16 @@ device_addrs_t mpmd_find_with_bcast(const device_addr_t& hint)
device_addrs_t addrs;
UHD_LOG_TRACE("MPMD FIND",
"Broadcasting on all available interfaces to find MPM devices.");
- for (const transport::if_addrs_t& if_addr : transport::get_if_addrs()) {
- device_addrs_t reply_addrs = mpmd_find_with_addr(if_addr.bcast, hint);
+ std::vector<std::future<device_addrs_t>> task_list;
+ for (const auto& if_addr : transport::get_if_addrs()) {
+ task_list.emplace_back(std::async(std::launch::async,
+ [if_addr, hint](){
+ return mpmd_find_with_addr(if_addr.bcast, hint);
+ }
+ ));
+ }
+ for (auto &task : task_list) {
+ auto reply_addrs = task.get();
addrs.insert(addrs.begin(), reply_addrs.begin(), reply_addrs.end());
}
return addrs;