I think that current approach is fine. At least since A==B in your example.

--Yakov

2015-03-23 16:06 GMT+03:00 Vladimir Ozerov <[email protected]>:

> I was a bit wrong in my explanation. The problem exists not when shating an
> instance between threads, but when different instances are processed inside
> the same thread. E.g. in one method you operate on instance A, then
> somewhere deeper in the stack you operate on instance B. There is a chance,
> the you will get a future from instance A when calling B.future().
>
> On Mon, Mar 23, 2015 at 3:40 PM, Sergey Evdokimov <[email protected]
> >
> wrote:
>
> > Result of asynchronous operation will be saved to ThreadLocal, so no
> > problem with sharing between threads.
> >
> > On Mon, Mar 23, 2015 at 1:47 PM, Vladimir Ozerov <[email protected]>
> > wrote:
> >
> > > Hi,
> > >
> > > Consider the following scenario:
> > >
> > > IgniteCache cache = ignite.cache();
> > >
> > > IgniteCache cache1 = cache.withAsync();
> > > IgniteCache cache2 = cache1.withAsync();
> > >
> > > cache1.put(...);
> > >
> > > assert cache2.future() != null;
> > >
> > > It means that currently no async instance can be shared between threads
> > > safely.
> > >
> > > Shouldn't we create new instance every time "withAsync()" is called? Or
> > > current semantics was implemented intentionally?
> > >
> > > Vladimir.
> > >
> >
>

Reply via email to