You can use the standard Java synchronization to synchronize the task
threads, e.g.

synchronized (YourMemcachedDataClass.class) {
  YourMemcachedDataClass cachedData =
(YourMemcachedDataClass)cache.get(CACHE_KEY);

  if (cachedData == null)
     cachedData = new YourMemcachedDataClass ();

  cachedData.add(...);
  cachedData.set(...);

  cache.put(CACHE_KEY, cachedData);
}

this way only 1 thread at a time will get into the synchronized block.

Hope it helps..

Michael Weinberg


On Dec 13, 11:41 am, Ice13ill <andrei.fifi...@gmail.com> wrote:
> Maybe there's something that i don't know very well about the memcache
> service and this problem is simpler then i thing it is... If so,
> please advice :)
>
> On Dec 13, 6:38 pm, Ice13ill <andrei.fifi...@gmail.com> wrote:
>
>
>
>
>
>
>
> > I need advice for implementing concurrent access to a memcache
> > variable, when used by multiple running tasks.
> > The problem is this: I have a number of tasks reading from datastore
> > and doing some processing.
> > When the processing is complete, i add a String to a List stored in
> > memcache. So i need to get the List from memcache, add a new element,
> > and put it back. The pb is that if 2 tasks write on that variable, i
> > get an exception (I understand that the memcache service gives me a
> > "clone" of the object, not the object itself, or am I wrong ?)
> > So how can i avoid more than one tasks writing in the same object ?

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to