discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Fwd: problem with top_block.stop()


From: Sumedha Goyal
Subject: Re: [Discuss-gnuradio] Fwd: problem with top_block.stop()
Date: Wed, 18 Dec 2013 21:59:42 +0530

Hi Tom, 

I have removed tb.wait(). Now the sequence is

tb=top_block(options,0.8) 
tb.start() 
sleep(3) 
tb.stop() 

I want my program to stop here and take new values which is not happening right now. It executes till sleep(3) and then hangs somewhere.

You have asked to stop the flowgraph internally, kindly suggest a way to do that. As I have mentioned earlier too, I have an event in the work() function which when occurs the flowgraph should be terminated. 
I tried using thread.exit in work function but unfortunately it is terminating the whole program. 

Kindly suggest a way to bring the control back to main loop.

Regards, 
Sumedha


On Wed, Dec 18, 2013 at 8:43 PM, Tom Rondeau <address@hidden> wrote:
On Wed, Dec 18, 2013 at 1:39 AM, Sumedha Goyal <address@hidden> wrote:
>
>
> ---------- Forwarded message ----------
> From: Sumedha Goyal <address@hidden>
> Date: Wed, Dec 18, 2013 at 10:50 AM
> Subject: Re: [Discuss-gnuradio] problem with top_block.stop()
> To: Tom Rondeau <address@hidden>
>
>
> Hi
> My flowgraph does not stop naturally. I want to stop and start it again
> using different value for a parameter as shown in my above question.
> There is an event in my program where the flowgraph finishes it's job with
> first parameter value (which is 0.8 here), at the occurrence of that event I
> want the control of flowgraph to come back to the main(). Then I want to
> restart the flowgraph with a new parameter value (which is 0.4 here).
> Kindly guide me on this.
>
> Also, can I forcibly bring the control back to main() even when the
> flowgraph doesn't have anything to stop its execution?
>
> Thanks and Regards,
> Sumedha


As I said, tb.wait() is a blocking call. If there is nothing to stop
your flowgraph, you will continue to block at the tb.wait() line
forever. If it helps, the top_block is implemented as a multi-threaded
application where each block is in its own thread. The tb.wait()
performs a thread join() on all threads in the flowgraph. So the
flowgraph must exit before wait will exit. You have to stop your
flowgraph internally somehow to continue.

Tom



> On Tue, Dec 17, 2013 at 11:24 PM, Tom Rondeau <address@hidden> wrote:
>>
>> On Tue, Dec 17, 2013 at 12:23 PM, Sumedha Goyal <address@hidden>
>> wrote:
>> > I am trying to pass two different parameters to my top_block class
>> > I m not able to do this please help. The control of program gets stuck
>> > at
>> > tb.stop() and doesn't go beyond that.
>> >
>> > tb=top_block(options,0.8)
>> > tb.start()
>> > tb.wait()
>> > tb.stop()
>> > sleep(5)
>> > print "I AM BACK"
>> > tb1=top_block(options,0.4)
>> > tb1.start()
>> > tb1.wait()
>> > tb1.stop()
>> > sleep()
>> >
>> > Regards,
>> > Sumedha
>>
>> Does your flowgraph in tb naturally stop? The tb.wait() is a blocking
>> call and will halt the main loop there until all threads (blocks) in
>> tb are done. If your flowgraph doesn't have something that stops
>> execution (like a finite file or a blocks.head block), then it will
>> continue to process forever and your tb.wait() will continue to block.
>>
>> Tom
>
>
>
>
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>


reply via email to

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