Re: my action item for explaining semantics of notify callbacks in SCE-MI pipes

From: Per Bojsen <per.bojsen_at_.....>
Date: Fri Apr 20 2007 - 11:18:04 PDT
Hi Shabtay,

> So obviously input pipe empty detected by a blocking receive call will
> cause a yield. However if the user chose the try_receive call which
> failed, the actual detection of the buffer being empty does NOT cause a
> yield. 

Perhaps the confusion stems from using the term `yield' without
qualifying whether it is the consumer or producer that is yielding.
If the consumer is calling try_receive() and it indicates no elements
were transferred because the pipe is empty, an ok_to_send() callback
will *not* be invoked because the state of the pipe did not change.
However, if the consumer will now have to wait a while before trying
again, e.g., it will have to yield to another thread and/or the
producer side of the pipe.  The reason a callback is not needed is
because the try_send() on the producer side will allow at least 1
element to be transferred.   This is guaranteed because we assumed
the pipe is empty.

I think the above is what John stated.  I am not sure where the confusion
is or what point you are trying to make?  Is there some hole you're
trying to uncover or make sure doesn't exist?

Per



-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Fri Apr 20 11:18:41 2007

This archive was generated by hypermail 2.1.8 : Fri Apr 20 2007 - 11:18:54 PDT