"Peter Dimov" <[EMAIL PROTECTED]> writes: > David Abrahams wrote: > >> That's the general idea. Of course we can haggle over the syntactic >> details, but the main question is whether you can get a return value >> from invoking a thread function or whether you have to declare some >> "global" state and ask the thread function to modify it. > > With the above AsyncCall: > > async_call<int> f( bind(g, 1, 2) ); // can offer syntactic sugar here > thread t(f); // or thread(f); for extra cuteness > int r = f.result(); > > The alternative seems to be > > async_call<int> f( bind(g, 1, 2) ); > int r = f.result(); > > but now f is tied to boost::thread. A helper > > int r = async(g, 1, 2);
Another alternative might allow all of the following: async_call<int> f(create_thread(), bind(g,1,2)); int r = f(); async_call<int> f(thread_pool(), bind(g,1,2)); int r = f(); 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)); -- Dave Abrahams Boost Consulting www.boost-consulting.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost