[Top][All Lists]

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

Re: [gpsd-dev] Minimum working example for libgps

From: Gary E. Miller
Subject: Re: [gpsd-dev] Minimum working example for libgps
Date: Tue, 7 Nov 2017 14:39:20 -0800

Yo Hal!

On Tue, 07 Nov 2017 13:50:12 -0800
Hal Murray <address@hidden> wrote:

> address@hidden said:
> >> A "main loop" makes sense if you have a typical GUI program.  
> > Or any long lasting program.  The program has to be looping/sleeping
> > somewhere to be ready for callbacks, user input, or gpsd input.   

> Consider a main loop that gets input from X, Y, and Z.  What are the 
> constraints needed to make a main loop work?

None that I see, from just that requirement.

> If all the APIs have a poll option, you can sleep for a short time
> when all have no input.

Or not sleep.

> If one API has a timeout, you can wait there yet get back often
> enough to poll the others.

Yes, the API timeout is almost equivalent to a main loop sleep.

And all still in one main loop.  So I miss the point?

> > I'll bet he does have a loop, he has to be waiting somewhere for
> > the thread to get back to him.  Adding another thread is just an
> > overcomplication.  
> In a thread friendly environment, that code is pretty simple.  Yes,
> it's more work if you don't have any threads yet.

And you still need a loop in the gpsd reading thread.  So nothing saved.

> > Wherever he is sitting, waaiting for work, that is a loop.  Just
> > poll gpsd in there.   
> If you have a multi-threaded program, none of the read/do loops may
> be the main one.  Consider a server with one thread per client.

It happens, but rare and fragile.     And you still have loops.

The OP said no loops.

> An alternate way of looking at things is that the OP doesn't like the
> API that gpsd provides.

Hard to say: not like, or not understand?

> The gpsd model is that it gives you all the
> data it gets and you have to pull often enough to keep the buffer
> from clogging.  An alternative model is that it digests everything,
> saves the latest values, and you can call in (no blocking) and get
> the latest/current value of X.

Yeah, a request last data mode might be interesting, but then gpsd,
or libgpsd, gets a lot more complicated as it needs to save a lot
of extra state variables.

> Many years ago, I was on the fringe of various API wars.  Should the
> API be push, callback, pull, or...?  We got pretty good at writing
> tiny adapter modules.  They are simple in a thread friendly
> environment.  I think the common case was a buffer, a thread, and
> less than a page of code.

If you think you can do it in one page of code, I'd like to see it.

Gary E. Miller Rellim 109 NW Wilmington Ave., Suite E, Bend, OR 97703
        address@hidden  Tel:+1 541 382 8588

            Veritas liberabit vos. -- Quid est veritas?
    "If you can’t measure it, you can’t improve it." - Lord Kelvin

Attachment: pgpq3tKunbO1J.pgp
Description: OpenPGP digital signature

reply via email to

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