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? > > > > > >