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 <yzhda...@apache.org> wrote:

> Is current thread blocked until "await" instruction is completed in
> parallel thread?
>
> --Yakov
>
> 2015-10-12 10:41 GMT+03:00 Vladimir Ozerov <voze...@gridgain.com>:
>
> > 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 <
> dsetrak...@apache.org
> > >
> > wrote:
> >
> > > On Sun, Oct 11, 2015 at 3:42 AM, Vladimir Ozerov <voze...@gridgain.com
> >
> > > 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?
> > >
> >
>

Reply via email to