No. "await" is actually return from the method immediately. Let me show it
again:
async Task<int> GetAndMultiply() {
Task<int> res = cache.GetAsync(1);
await res;
return res.Result * res.Result;
}
maps to the following pseudo-code in Java:
Future<Integer> getAndMultiply() {
Future<Integer> res = cache.getAsync(1);
return res.chain((f) => {
return f.get() * f.get();
});
}
On Mon, Oct 12, 2015 at 1:36 PM, Yakov Zhdanov <[email protected]> wrote:
> Is current thread blocked until "await" instruction is completed in
> parallel thread?
>
> --Yakov
>
> 2015-10-12 10:41 GMT+03:00 Vladimir Ozerov <[email protected]>:
>
> > Example with Get() operation:
> >
> > async Task<int> GetAndMultiply() {
> > // This line is executed in current thread.
> > Task<int> res = cache.GetAsync(1);
> >
> > await res;
> >
> > // This code is executed in another thread when res is ready.
> > int mul = res.Result * res.Result;
> >
> > return mul;
> > }
> >
> > On Mon, Oct 12, 2015 at 10:12 AM, Dmitriy Setrakyan <
> [email protected]
> > >
> > wrote:
> >
> > > On Sun, Oct 11, 2015 at 3:42 AM, Vladimir Ozerov <[email protected]
> >
> > > wrote:
> > >
> > > > Guys, let's try keeping this topic focused on .Net please, because
> the
> > > > product is not released yet and we can create any API we like.
> > > >
> > > > Dima, answering your question about async/await - this is actually
> > native
> > > > continuation support in .Net. Consider the following .Net method:
> > > >
> > > > async void PutAndPrint() {
> > > > await cache.PutAsync(1, 1);
> > > >
> > > > Console.WriteLine("Put value to cache.");
> > > > }
> > > >
> > >
> > > And what if the method putAsync would return a value. How would this
> code
> > > change?
> > >
> >
>