Hi Prashant,
thanks.
On Jun 16, 4:01 pm, Prashant <
antsh...@gmail.com> wrote:
> I can think of two approaches:
>
> 1. Let all threads read the data (in parallel) and use transaction to update
> the data. Transaction will fail for all the thread except for one. Threads
> with failed transaction will again read data, recompute the things and try
> to update the data again.
Well, sounds as a reasonable solution. Nevertheless if the suggestion
of Ernesto works, looks cleaner for me...
>
> 2. Implement a global locking scheme - Make a dummy entity with a field of
> type boolean. Take true == "lock acquired" & false == "lock free". A thread
> which is trying to update the data will have to acquire the lock before
> reading data. To acquire a lock a thread will try to set lock = true, using
> transaction. If lock is already taken, thread will wait for the locking
> thread to release the lock.
>
> In the second case, number of datastore reads can be reduced by caching lock
> entity in memcache.
I tried it with global lock in memcache, but there's no atomic test
and set function, so it does not work, or am I missing things out?