discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Regression in GR3.10


From: Josh Morman
Subject: Re: Regression in GR3.10
Date: Wed, 15 Jun 2022 10:55:32 -0400

Max,

The msgq API probably should be deprecated, but it is in fact there in 3.10.  I think you are right that it is an issue with the GIL because delete_head it is a long blocking function.  Are you able to use delete_head_nowait instead?

Thanks,
Josh

On Wed, Jun 15, 2022 at 10:08 AM ikjtel <ikj1234i@yahoo.com> wrote:
The script pasted below runs OK in 3.8 but hangs (with no iteration output) in 3.10 (Ubuntu 22.04).  Naturally no message is anticipated - but the script should not hang!

This problem is blocking the release of OP25 for GR3.10.

I suspect deadlock due to failure to release the Python GIL.

Kindly advise - thx

Max
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/usr/bin/env python

import os
import sys
import threading
import time

from gnuradio import gr

class queue_watcher(threading.Thread):

    def __init__(self, msgq,  callback, **kwds):
        threading.Thread.__init__ (self, **kwds)
        self.msgq = msgq
        self.callback = callback
        self.keep_running = True
        print ('starting thread')
        self.start()

    def run(self):
        while(self.keep_running):
            msg = self.msgq.delete_head()
            if not self.keep_running:
                break
            self.callback(msg)

def callback(msg):
     print('callback: msg received: %d' % msg.type())

my_msgq = gr.msg_queue(1)

watcher = queue_watcher(my_msgq, callback)

i = 0
while True:
    time.sleep(1)
    print('main loop running iteration %d' % i)
    i += 1



reply via email to

[Prev in Thread] Current Thread [Next in Thread]