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