"William E. Kempf" <[EMAIL PROTECTED]> writes: > David Abrahams said: >> "William E. Kempf" <[EMAIL PROTECTED]> writes: >>>>>> int r = async_call<int>(create_thread(), bind(g, 1, 2)); >>>>>> >>>>>> int r = async(boost::thread(), g, 1, 2); >>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >>>>>> >>>>>> int r = async_call<int>(rpc(some_machine), bind(g,1,2)); >>>>>> >>>>>> int r = async_call<int>(my_message_queue, bind(g,1,2)); >>> >>> None of these make much sense to me. You're executing the function >>> object in a supposedly asynchronous manner, but the immediate >>> assignment to int renders it a synchronous call. Am I missing >>> something again? >> >> No, my fault. Syntactically, I should've written this: >> >> async_call<int> f(create_thread(), bind(g,1,2)); >> int r = f(); > > Do you want it to be "int r = f();" or just "int r = f;" or even "int r = > f.result();" or similar?
My other message makes it clear (I hope) that I want what I wrote above. > The f() syntax makes it look like you're invoking the call at that > point, when in reality the call was invoked in the construction of > f. You're just invoking a function to get the result. f itself is not the result, so I don't want to use implicit conversion, and f.result() does not let f behave polymorphically in a functional programming context. >>> Ouch. A tad harsh. >> >> Sorry, not intended. I was just trying to palm off responsibility for >> justifying that line on you ;o) >> >>> But yes, I do see this concept applying to RPC invocation. "All" >>> that's required is the proxy that handles wiring the data and the >>> appropriate scaffolding to turn this into an Executor. Obviously this >>> is a much more strict implementation then thread >>> creation... you can't just call any function here. >> >> I don't get it. Could you fill in more detail? For example, where does >> the proxy come from? > >>From a lot of hard work? ;) Or often, it's generated by some IDL like > compiler. Traditional RPCs behave like synchronous calls, but DCOM and > other such higher level RPC mechanisms offer you alternative designs where > the initial invocation just wires the input to the server and you retreive > the results (which have been asynchronously wired back to the client and > buffered) at a later point. In my own work we often deal with RPC > mechanisms like this, that can take significant amounts of time to > generate and wire the results back, and the client doesn't need/want to > block waiting the whole time. Sure, sure, but all the details about the proxy, etc, are missing. Not that I think it matters... ;-) -- Dave Abrahams Boost Consulting www.boost-consulting.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost