diff options
author | Josh Blum <josh@joshknows.com> | 2011-04-22 17:02:07 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2011-04-22 17:02:07 -0700 |
commit | 627075e60e0b893a412e849301ccef5bb2e8a68a (patch) | |
tree | ef35c3da25ff76dc2feb28677d0e33f54f724cf3 | |
parent | ef9ca5f928a9ebe4a3f8551698ea4f20f52f6652 (diff) | |
download | uhd-627075e60e0b893a412e849301ccef5bb2e8a68a.tar.gz uhd-627075e60e0b893a412e849301ccef5bb2e8a68a.tar.bz2 uhd-627075e60e0b893a412e849301ccef5bb2e8a68a.zip |
uhd: move thread loop condition flag to before barrier (prevents race condition)
-rw-r--r-- | host/lib/transport/libusb1_zero_copy.cpp | 2 | ||||
-rw-r--r-- | host/lib/usrp/usrp2/io_impl.cpp | 2 | ||||
-rw-r--r-- | host/lib/usrp/usrp_e100/io_impl.cpp | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/host/lib/transport/libusb1_zero_copy.cpp b/host/lib/transport/libusb1_zero_copy.cpp index e42cab1d1..ec2077d30 100644 --- a/host/lib/transport/libusb1_zero_copy.cpp +++ b/host/lib/transport/libusb1_zero_copy.cpp @@ -277,10 +277,10 @@ private: bool _threads_running; void run_event_loop(boost::barrier &spawn_barrier){ + _threads_running = true; spawn_barrier.wait(); set_thread_priority_safe(); libusb_context *context = libusb::session::get_global_session()->get_context(); - _threads_running = true; try{ while(_threads_running){ timeval tv; diff --git a/host/lib/usrp/usrp2/io_impl.cpp b/host/lib/usrp/usrp2/io_impl.cpp index 07cbd2432..005be7ce4 100644 --- a/host/lib/usrp/usrp2/io_impl.cpp +++ b/host/lib/usrp/usrp2/io_impl.cpp @@ -228,9 +228,9 @@ void usrp2_impl::io_impl::recv_pirate_loop( zero_copy_if::sptr err_xport, size_t index ){ + recv_pirate_crew_raiding = true; spawn_barrier.wait(); set_thread_priority_safe(); - recv_pirate_crew_raiding = true; //store a reference to the flow control monitor (offset by max dsps) flow_control_monitor &fc_mon = *(this->fc_mons[index*usrp2_mboard_impl::MAX_NUM_DSPS]); diff --git a/host/lib/usrp/usrp_e100/io_impl.cpp b/host/lib/usrp/usrp_e100/io_impl.cpp index cbab5a761..51ff02d3b 100644 --- a/host/lib/usrp/usrp_e100/io_impl.cpp +++ b/host/lib/usrp/usrp_e100/io_impl.cpp @@ -109,9 +109,9 @@ struct usrp_e100_impl::io_impl{ void usrp_e100_impl::io_impl::recv_pirate_loop( boost::barrier &spawn_barrier, usrp_e100_clock_ctrl::sptr clock_ctrl ){ + recv_pirate_crew_raiding = true; spawn_barrier.wait(); set_thread_priority_safe(); - recv_pirate_crew_raiding = true; while(recv_pirate_crew_raiding){ managed_recv_buffer::sptr buff = this->data_xport->get_recv_buff(); |