powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Нужен ли барьер памяти и как его реализовать?
8 сообщений из 8, страница 1 из 1
Нужен ли барьер памяти и как его реализовать?
    #38509014
AYTereschenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу небольшой эмулятор виртуального компьютера. Часть его памяти отведена под видеобуфер. Собственно, код эмулятора выполняется в одном потоке, а в другом потоке содержимое этого видеобуфера периодически выводится на экран. Я правильно понимаю, что для того, чтобы на экран выводилось всегда актуальное состояние видеобуфера, нужно гарантировать, чтобы к моменту отрисовки никакие данные, записанные в область памяти видеобуфера первым потоком эмулятора, не остались закешированными? Т.е. надо барьер памяти вставить перед отрисовкой? Как это сделать в данном случае и можно ли сбрасывать кеш только для определенного участка памяти, или барьер памяти в принципе весь кеш процессора сбрасывает?
Если просто какую-нибудь volatile переменную завести и записывать в нее что-нибудь перед каждой прорисовкой видеобуфера, то это поможет?
...
Рейтинг: 0 / 0
Нужен ли барьер памяти и как его реализовать?
    #38509030
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AYTereschenko,
Чтобы видеть актуальное состояние нужно, что бы между двумя операциями было happens-before. Соответственно, через volatile нужно, что бы вы в пишущем потоке писали в него, а в читающем - читали из него. Но там надо быть очень осторожным, если вам нельзя видеть промежуточные значения.
...
Рейтинг: 0 / 0
Нужен ли барьер памяти и как его реализовать?
    #38509057
AYTereschenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cdtyjv,
ну ок, значит volatile не годится, потому что в эмулирующем потоке я не знаю, когда наступает момент вывода изображения на экран. чем еще можно создать happens-before в такой ситуации?
...
Рейтинг: 0 / 0
Нужен ли барьер памяти и как его реализовать?
    #38509062
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно видеопамять состоит из 2х буферов. Front/Back. Пока ты рисуешь в back - front отображается
пользователю. После того как back отрисован они меняются местами.
...
Рейтинг: 0 / 0
Нужен ли барьер памяти и как его реализовать?
    #38509063
AYTereschenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,
да, конечно, но в данном конкретном случае никаких front/back нет. есть одна непрерывная область памяти, часть которой рассматривается как видеобуфер и выводится на экран, как это было в большинстве старых архитектур.
...
Рейтинг: 0 / 0
Нужен ли барьер памяти и как его реализовать?
    #38509132
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AYTereschenko,
Может быть вам подойдет ReadWriteLock (или StampedLock в будущей Java8).
...
Рейтинг: 0 / 0
Нужен ли барьер памяти и как его реализовать?
    #38511193
AYTereschenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cdtyjvAYTereschenko,
Может быть вам подойдет ReadWriteLock (или StampedLock в будущей Java8).
А как именно здесь можно применить RWL? В основном эмулирующем потоке мне не известны моменты времени, когда второй поток выводит картинку на экран. Постоянно проверять какой-нибудь флажок тоже не вариант, т.к. это сильно замедлит скорость эмуляции.
...
Рейтинг: 0 / 0
Нужен ли барьер памяти и как его реализовать?
    #38511229
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AYTereschenkomayton,
да, конечно, но в данном конкретном случае никаких front/back нет. есть одна непрерывная область памяти, часть которой рассматривается как видеобуфер и выводится на экран, как это было в большинстве старых архитектур.
В настолько старых архитектурах никаких барьеров небыло. Поэтому не совсем понятно с чем боремся? Все прямые изменения в видео-буфере всегда видны при отрисовке, если иного не предусмотрено железкой.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Нужен ли барьер памяти и как его реализовать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]