bug-guile
[Top][All Lists]
Advanced

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

Re: with-timeout and asynchronous alarm (was: signal handling different


From: Gregory Marton
Subject: Re: with-timeout and asynchronous alarm (was: signal handling different in 1.8.3 than 1.8.1?)
Date: Fri, 18 Jul 2008 09:44:31 -0400 (EDT)

Hi Ludo',

Sorry for reading more into your words than was intended.

At a minimum, we could provide a Scheme primitive to allow users to explicitly ask system asyncs to run (and that's just a few lines of C to add). What do you think?

If it's easy, a "force-asyncs" may be useful in general. I worry first that it is a sort of representation exposure, and that the promise (they'll get run very soon) should be good enough. More importantly, short of a busy-wait loop, I don't see how it would help the alarm case. Where would I invoke it?

The common case is something like
   (with-timeout 60 (lambda () (http-get "http://some.url/";))
                    (lambda () (throw 'server-timeout)))
which boils down to
   (alarm 60)
   (block-waiting-for-input inet-port)
which in testing I chose to simulate as:
   (alarm 60)
   (sleep 100)

In both the blocking and the sleep case, even a busy wait feels like it would want to run in a separate thread or something, constantly calling force-asyncs. In the blocking case, perhaps there are games to play with select but that forces the code to be timed out to cooperate. If someone didn't write their library with this in mind...

I haven't written much multithreaded code, and none in guile, so I'm probably misunderstanding something. How would force-asyncs help?

Many thanks,
Grem

Hi,

Gregory Marton <address@hidden> writes:

As I suggested earlier [0], I think it's just a matter of
non-determinism: there's no guarantee as to when system asyncs are run.

And as I suggested earlier, I think it is very valuable to have
guarantees about when alarms in particular are handled -- that being
what they're for.

Yes, I understand the rationale---and sorry if my message sounded harsh!

At a minimum, we could provide a Scheme primitive to allow users to
explicitly ask system asyncs to run (and that's just a few lines of C to
add).  What do you think?

Ludo'.





--
------ __@   Gregory A. Marton                http://csail.mit.edu/~gremio/
--- _`\<,_                                                                .
-- (*)/ (*)    A programming language is a very dangerous data structure.
~~~~~~~~~~~~~~~~-~~~~~~~~_~~~_~~~~~v~~~~^^^^~~~~~--~~~~~~~~~~~~~~~++~~~~~~~





reply via email to

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