On 6 March 2013 13:26, Rafael Schloming <r...@alum.mit.edu> wrote:
> On Wed, Mar 6, 2013 at 1:44 AM, Rob Godfrey <rob.j.godf...@gmail.com> wrote:
>> On 5 March 2013 21:10, Rafael Schloming <r...@alum.mit.edu> wrote:
>> > On Tue, Mar 5, 2013 at 11:24 AM, Ted Ross <tr...@redhat.com> wrote:
>> [.. snip ..]
>> > It isn't really possible to have "put" cause messages to be eventually
>> > without a background thread, something we don't currently have.
>> I think it's this that is what makes me find the API slightly odd.
>> That put is an asynchronous operation is fine, but the fact that the
>> only way to get work to occur is for a synchronous operation to be
>> called seems a little screwy.
>> If I understand correctly, right now an application programmer cannot
>> actually write an "asynchronous publisher", every so often they would
>> have to call some form of synchronous operation.
>> At the very least it would seem to suggest there might be call for a
>> "do some work but don't block" function in the API. This could either
>> take an aggressive strategy of flushing everything that it can to the
>> wire, or it could attempt to optimize into larger transmission units.
> This is exactly what happens when you set the timeout to zero and call send
> (or recv). Are you saying you want some other way of doing the same thing
> or you want a background thread?
Surely though setting timeout to 0 and calling send results in
something that looks like an error ("this timed out"). On a Java
implementation I would expect this to throw an exception. That's not
really the semantic I'm expecting. The semantic is "do some work if
you can without blocking".