[Cache] и многопоточность (для server-side)
От: dimgel Россия https://github.com/dimgel
Дата: 20.05.09 13:00
Оценка: 56 (1)
Всем привет. Не нашёл нигде обсуждений работы BLT в конкурентной среде. Вопрос: как вы разруливаете следующую ситуацию.

Допустим, есть методы:
[Cache] getSomething()
[ClearCache] updateSomething(x)

Transaction isolation = read committed.


Поток 1: getSomething() // возвращает A из базы, помещает в кеш

Поток 1: startTransaction
Поток 2: startTransaction
Поток 2: updateSomething(B) // сбрасывает кеш
Поток 1: getSomething() // возвращает A из базы, помещает в кеш
Поток 2: commit // фиксирует в базе something=B
Поток 1: commit

Поток 1: getSomething() // возвращает A из кеша, когда в базе уже закоммичен B
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.