diff options
Diffstat (limited to 'host')
-rw-r--r-- | host/lib/transport/libusb1_base.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/host/lib/transport/libusb1_base.cpp b/host/lib/transport/libusb1_base.cpp index 83d9fe1df..d383b0a3e 100644 --- a/host/lib/transport/libusb1_base.cpp +++ b/host/lib/transport/libusb1_base.cpp @@ -16,6 +16,7 @@ #include <boost/weak_ptr.hpp> #include <cstdlib> #include <iostream> +#include <mutex> using namespace uhd; using namespace uhd::transport; @@ -86,6 +87,10 @@ libusb_session_impl::~libusb_session_impl(void) libusb::session::sptr libusb::session::get_global_session(void) { static boost::weak_ptr<session> global_session; + // this mutex is to ensure a global session is not currently being created + // before checking for the existence of one + static std::mutex global_session_mutex; + std::lock_guard<std::mutex> lock(global_session_mutex); // not expired -> get existing session if (not global_session.expired()) |