mirror of
https://github.com/saymrwulf/uhd.git
synced 2026-05-16 21:10:10 +00:00
transport: switch to the atomic claimer
This wont have much effect because the buffers are not currently used in any queue by the caller
This commit is contained in:
parent
9dec0b7e8b
commit
72a3fe550f
3 changed files with 3 additions and 66 deletions
|
|
@ -1,64 +0,0 @@
|
|||
//
|
||||
// Copyright 2012 Ettus Research LLC
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
#ifndef INCLUDED_LIBUHD_TRANSPORT_SIMPLE_CLAIMER_HPP
|
||||
#define INCLUDED_LIBUHD_TRANSPORT_SIMPLE_CLAIMER_HPP
|
||||
|
||||
#include <uhd/config.hpp>
|
||||
#include <boost/thread/condition.hpp>
|
||||
#include <boost/thread/mutex.hpp>
|
||||
|
||||
namespace uhd{ namespace transport{
|
||||
|
||||
/***********************************************************************
|
||||
* Claimer class to provide synchronization for multi-thread access.
|
||||
* Claiming enables buffer classes to be used with a buffer queue.
|
||||
**********************************************************************/
|
||||
class simple_claimer{
|
||||
public:
|
||||
simple_claimer(void){
|
||||
this->release();
|
||||
}
|
||||
|
||||
UHD_INLINE void release(void){
|
||||
boost::mutex::scoped_lock lock(_mutex);
|
||||
_locked = false;
|
||||
lock.unlock();
|
||||
_cond.notify_one();
|
||||
}
|
||||
|
||||
UHD_INLINE bool claim_with_wait(const double timeout){
|
||||
boost::mutex::scoped_lock lock(_mutex);
|
||||
while (_locked){
|
||||
if (not _cond.timed_wait(lock, boost::posix_time::microseconds(long(timeout*1e6)))){
|
||||
break;
|
||||
}
|
||||
}
|
||||
const bool ret = not _locked;
|
||||
_locked = true;
|
||||
return ret;
|
||||
}
|
||||
|
||||
private:
|
||||
bool _locked;
|
||||
boost::mutex _mutex;
|
||||
boost::condition_variable _cond;
|
||||
};
|
||||
|
||||
}} //namespace uhd::transport
|
||||
|
||||
#endif /* INCLUDED_LIBUHD_TRANSPORT_SIMPLE_CLAIMER_HPP */
|
||||
|
|
@ -16,12 +16,12 @@
|
|||
//
|
||||
|
||||
#include "udp_common.hpp"
|
||||
#include "simple_claimer.hpp"
|
||||
#include <uhd/transport/udp_zero_copy.hpp>
|
||||
#include <uhd/transport/udp_simple.hpp> //mtu
|
||||
#include <uhd/transport/buffer_pool.hpp>
|
||||
#include <uhd/utils/msg.hpp>
|
||||
#include <uhd/utils/log.hpp>
|
||||
#include <uhd/utils/atomic.hpp>
|
||||
#include <boost/format.hpp>
|
||||
#include <boost/make_shared.hpp>
|
||||
#include <vector>
|
||||
|
|
|
|||
|
|
@ -15,12 +15,12 @@
|
|||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
#include "simple_claimer.hpp"
|
||||
#include <uhd/transport/usb_zero_copy.hpp>
|
||||
#include <uhd/transport/buffer_pool.hpp>
|
||||
#include <uhd/utils/byteswap.hpp>
|
||||
#include <uhd/utils/msg.hpp>
|
||||
#include <uhd/utils/tasks.hpp>
|
||||
#include <uhd/utils/atomic.hpp>
|
||||
#include <boost/foreach.hpp>
|
||||
#include <boost/make_shared.hpp>
|
||||
#include <boost/thread/mutex.hpp>
|
||||
|
|
@ -29,6 +29,7 @@
|
|||
#include <vector>
|
||||
#include <iostream>
|
||||
|
||||
using namespace uhd;
|
||||
using namespace uhd::transport;
|
||||
|
||||
static const boost::posix_time::time_duration AUTOFLUSH_TIMEOUT(boost::posix_time::milliseconds(1));
|
||||
|
|
|
|||
Loading…
Reference in a new issue