Hi Marcus,

On Sun, Jun 1, 2014 at 2:44 PM, Marcus Müller <marcus.muel...@ettus.com>
wrote:

> Hi Mostafa,
>
> > You said the there is no problem that we wait on the source to produce
> as long as we want! But this is not true when I have other blocks
> waiting for processing!!
>
> Not true. If your block can't produce something, it's not GNU Radio's
> fault your downstream blocks don't have anything to consume...
>
>
This is not true because when I produce 1-3 packet of bits, the scheduler
doesn't go to the other blocks while there is items for them! The scheduler
calls the random bit generator for about 10 times!!


> >   In other word, when the source produces one packet, I want this
> packet go down through blocks and amid of these blocks a message must
> tells the source to produce again.
>
> This sounds like a bad design choice, why would a downstream block need
> to tell the source to produce again?
> I think we might have tried to convince you not to do this before, but I
> just can't find the thread where you describe your problem.
>
>
I think you're right. I would control something somewhere else. :)


> >  If the source doesn't produce anything after generating some packets,
> the scheduler will be locked on the source and does nothing with other
> blocks!!
>
> Exactly. If your source doesn't produce anything, your downstream blocks
> can't consume anything -- there's nothing GNU Radio could do about this.
> I'm fairly certain that GNU Radio will not stall a flow graph if there
> is more than zero unprocessed items in the buffers. Haven't tested that,
> though. Maybe someone else might comment on this.
> So you have a logical deadlock, not a GNU Radio problem, if I understand
> you correctly.
>
> > As you said, the *wait* will work for this source, but it's also has
> the same problem I mentioned.
>
> Sorry, still don't undertand which problem you are writing about :(
>
>
> I've read your code. There's absolutely no reason why the standard
> behaviour of GNU Radio filling the output buffer of your source wouldn't
> work -- these are pseudorandom numbers,
> and there's absolutely no difference between generating e.g. 8192 at
> once and producing them one at a time.
>
>
> Greetings,
> Marcus
>
> Müller <marcus.muel...@ettus.com> wrote:
> >> Mostafa,
> >>
> >> I know you've been working many hours on this :) so don't worry, you're
> >> being heard.
> >>
> >> Nevertheless, GNU Radio is surely not calling the asking the source
> >> "crazily" to produce items.
> >>
> >> GNU Radio is a streaming-into-buffers architecture, which means that the
> >> runtime will ask a source to produce output when there is space in the
> >> output buffer. I fail to see the problem with this, since your source
> >> can just take as much time as it wants to finish a work call, can
> >> produce less than noutput_items, and generally should just be as fast as
> >> it could. Not a single one of the items it produced is going to waste!
> >>
> >> It is good practice and done by *every* externally rate-limited source
> >> to just block in work until enough items can be produced. If you need to
> >> wait to get more random seed, well, then wait in work(). I admit, that
> >> gets a little tricky when you want your seed to come in using a message,
> >> because messages are not going to disturb your work due to design for
> >> thread-safety.
> >>
> >> But then again, before I start proposing wait-notify/condition
> >> multithreading methods, I'd like to hear a bit about your source and why
> >> being called often is a problem; that's usually not the case, so chances
> >> are we might help you find a solution if we understood what's wrong with
> >> your source ;)
> >>
> >> Greetings,
> >> Marcus
> >>
> >> On 01.06.2014 10:56, Mostafa Alizadeh wrote:
> >>> Hi Mike,
> >>>
> >>> No, the throttle isn't a source! It just controls the flow of items in
> an
> >>> specific time interval. I don't want this! I want cognitively tell the
> >>> source produces the random bits after some special procedures have done
> >> (a
> >>> message can do this for the source). But the scheduler crazily wants
> the
> >>> source to produce items! :)
> >>>
> >>> How could I deal with this problem?
> >>> please.
> >>>
> >>> Best,
> >>>
> >>>
> >>>
> >>> On Sun, Jun 1, 2014 at 1:18 PM, Mike Jameson <mike.jame...@ettus.com>
> >> wrote:
> >>>> The "Throttle" block is required if you are not using any external
> >>>> hardware:
> >>>>
> >>>> http://gnuradio.org/doc/doxygen/classgr_1_1blocks_1_1throttle.html
> >>>>
> >>>> Mike
> >>>>
> >>>> --
> >>>> Mike Jameson M0MIK BSc MIET
> >>>> Ettus Research Technical Support
> >>>> Email: supp...@ettus.com
> >>>> Web: http://ettus.com
> >>>>
> >>>>
> >>>> On Sun, Jun 1, 2014 at 9:30 AM, Mostafa Alizadeh <
> >> m.alizade...@gmail.com>
> >>>> wrote:
> >>>>
> >>>>> Hi,
> >>>>> I worked on GNURadio for many hours. After all, I prepared my blocks
> in
> >>>>> c++. However, the source by which I produce random bits (items with
> >>>>> sizeof(char) ) doesn't work properly! By properly I mean, I wanted
> >> GNURadio
> >>>>> to lead me control how it's going to call the *source.* It's crazily
> >>>>> calling the random bit generator so many times.
> >>>>>
> >>>>> I think this is because of the GNURadio's strategy for executing
> blocks
> >>>>> to achieve as maximum throughput as possible! So GNURadio translates
> >> it*
> >>>>> to call the source as much as possible*.(no matter what is the
> source,
> >>>>> here is the random bit generator)
> >>>>>
> >>>>> Am I right? If I am, what is the solution?
> >>>>>
> >>>>> Best,
> >>>>> Mostafa
> >>>>>
> >>>>> _______________________________________________
> >>>>> Discuss-gnuradio mailing list
> >>>>> Discuss-gnuradio@gnu.org
> >>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> >>>>>
> >>>>>
> >>>
> >>> _______________________________________________
> >>> Discuss-gnuradio mailing list
> >>> Discuss-gnuradio@gnu.org
> >>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> >>
> >> _______________________________________________
> >> Discuss-gnuradio mailing list
> >> Discuss-gnuradio@gnu.org
> >> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> >>
>
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to