fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmocom-bb/+/39535?usp=email )
Change subject: trx_toolkit/transceiver: Use with tx_queue_lock instead of manual acquire/release ......................................................................
trx_toolkit/transceiver: Use with tx_queue_lock instead of manual acquire/release
- it is a bit faster - it is a bit more robust as the lock becomes released in case some exception is raised before reaching release
Noticed while moving forwarding out of tx_queue_lock in I7d10c972c45b2b5765e7c3a28f8646508b3c8a82.
Change-Id: I74b194120bcc518d44796b57e36368bdc8de4aab --- M src/target/trx_toolkit/transceiver.py 1 file changed, 9 insertions(+), 11 deletions(-)
Approvals: Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve lynxis lazus: Looks good to me, approved fixeria: Looks good to me, approved
diff --git a/src/target/trx_toolkit/transceiver.py b/src/target/trx_toolkit/transceiver.py index 2a638c5..e6af013 100644 --- a/src/target/trx_toolkit/transceiver.py +++ b/src/target/trx_toolkit/transceiver.py @@ -312,18 +312,16 @@ emit = [] wait = []
- self._tx_queue_lock.acquire() + with self._tx_queue_lock: + for msg in self._tx_queue: + if msg.fn < fn: + drop.append(msg) + elif msg.fn == fn: + emit.append(msg) + else: + wait.append(msg)
- for msg in self._tx_queue: - if msg.fn < fn: - drop.append(msg) - elif msg.fn == fn: - emit.append(msg) - else: - wait.append(msg) - - self._tx_queue = wait - self._tx_queue_lock.release() + self._tx_queue = wait
for msg in emit: fwd.forward_msg(self, msg)