Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > чтение кешированного значения, пока пишется новое


Автор: CompWorm 11.9.2014, 21:01
Здарова!

- есть большой объект некоторого класса (желательно иметь одну копию в каждый момент времени), который хранит ряд параметров (класс-мемберы).
- есть тред, который в цикле читает параметры объекта.
- есть тред, который в цикле неспешно обновляет параметры объекта.
Параметры объекта должны быть консистентными, то есть нельзя начинать читать параметры, пока пишущий тред не закончит обновление каждого параметра.

простое решение - поставить запись и чтение под мьютекс (synchronized), однако ключевым тут является "неспешное обновление в цикле" - читающий тред должен читать кешированный объект, пока пишущий занят обновлением параметров.

на плюсах я б наверно решил задачу в лоб - создал бы буфер для записи и флипил бы его под мьютексом по мере готовности, но в Java я слыхал есть какая-то нативная возможноть читать кешированное, пока не окончится блок синхронайза пишущего треда (куча ReadWriteLock всяких итп)...

что посоветуете? smile 

Автор: LSD 2.10.2014, 15:17
Цитата(CompWorm @  11.9.2014,  22:01 Найти цитируемый пост)
но в Java я слыхал есть какая-то нативная возможноть читать кешированное, пока не окончится блок синхронайза пишущего треда (куча ReadWriteLock всяких итп)...

Говорят в Африке зимы нет. Болтают.
Это не возможность, а возможный побочный эффект. Т.е. ничего там не гарантированно, но возможно.

В общем AtomicReference + copy-on-write и вперед.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)