Re: "This method blocks until..." means what exactly?
On Mon, 2 Aug 2010, Arved Sandstrom wrote:
Nigel Wade wrote:
On 30/07/10 20:38, Screamin Lord Byron wrote:
On 30.07.2010 12:20, Nigel Wade wrote:
I infer "blocking" to imply:
a) no useful work is being performed
b) the duration is indeterminate (usually due to external factors)
whether it yields the CPU to other threads, or spins, isn't material to
the meaning of "blocked" - it may do either.
Wouldn't you say that a function which does some time consuming
cryptographic computation (like generating long RSA keypairs) blocks
if it doesn't return before the computation is finished?
No, I wouldn't.
To me, if it's actually performing its allotted task then it's running,
not blocked. If it were blocked then it would be doing nothing, unable
to perform it's required task (generally because it's waiting for some
event to occur). That's why the term "blocked" is used (similar to when
a road is blocked), it can't perform its function because something is
preventing it. If it's running, doing what it's meant to do, I would
not consider it blocked.
Yeah, but that's to "you". The general definition is simply that a blocking
(synchronous) method does not return until it has finished its work, or it
fails. That's it.
Evidence for this assertion, please.
I'm more or less with Nigel. I'm not bothered about whether the CPU is
busy, or whether useful work is being done, but to me, blocking means that
a method doesn't return *until some external actor causes it to*. The
long-running cryptographic function is not blocking, because it doesn't
require any external input to finish. A normal IO method is, because it
can get stuck waiting for hardware.
It seems to me that if you call the cryptographic function blocking, then
you have to call every function blocking, because no function returns
before the computations it performs are finished (although i understand
there's a Clojure extension for time-travel). That seems like a remarkably
useless definition of the term.
tom
--
What we learn about is not nature itself, but nature exposed to our
methods of questioning. -- Werner Heisenberg