On 10 May 2012 10:45, Helmut Eller heller@common-lisp.net wrote:
It seems to me that WITH-DEADLINE must be used whenever we wait for something and don't know for certain that we aren't inside another WITH-DEADLINE. I.e. "in general" WITH-DEADLINE must be used and only in the special case when we know that no caller used WITH-DEADLINE can it
I don't see how this follows. Local :TIMEOUT and a global deadline are two different things.
I consider cases where :OVERRIDE is used to be red flags that something is wrong. Either there's a deadline that is unrealistic, or you're blocking way too long. The only places I've used :OVERRIDE so far myself for real is in SB-EXT:EXIT, for which a DEADLINE-TIMEOUT would be quite inappropriate, IMO.
In case of Slime, the deadline of 0.1 seconds installed by the :AROUND method is probably unrealistic considering what it is for, and the occasional sluggishness of the system and the purpose of the deadline. 1 second would do just as well.
I /don't/ dispute the hacky nature of WITH-DEADLINE for a second, though. It's whole purpose is intercession into parts of a program not written with timeouts in mind -- third party libraries, etc.
Cheers,
-- Nikodemus