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: Tom Rondeau
Subject: Re: [Discuss-gnuradio] Fwd: problem with top_block.stop()
Date: Wed, 18 Dec 2013 10:13:08 -0500

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]