Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Объясните толков что означает слово volatile / 25 сообщений из 36, страница 1 из 2
21.05.2006, 16:52:52
    #33741078
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
А то нифига не понял зачем оно.
...
Рейтинг: 0 / 0
21.05.2006, 17:03:07
    #33741084
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
Типа synchronized на переменную

======================
- Я подхожу к клетке с медведем панда...
Видите, какие у него черные круги под глазами?!
Медведь панда как бы всем своим видом говорит нам: "Не бухайте!"
======================
...
Рейтинг: 0 / 0
21.05.2006, 17:08:21
    #33741090
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
Тоесть в данный момент работать с переменной может только один поток?
...
Рейтинг: 0 / 0
21.05.2006, 18:12:12
    #33741145
Миша Оно
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
Объявление переменной volatile гарантирует, что операция присвоения будет атомарна (это не так для double и long), а так же, что значение переменной не будет кешироваться (актуально для многопроцессорных машин).
...
Рейтинг: 0 / 0
21.05.2006, 19:59:18
    #33741218
Sarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
Большое спасибо. Понял.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
13.12.2012, 13:22:59
    #38077547
roibush
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
Кувалдин РоманТипа synchronized на переменную

======================
- Я подхожу к клетке с медведем панда...
Видите, какие у него черные круги под глазами?!
Медведь панда как бы всем своим видом говорит нам: "Не бухайте!"
======================

хм, имхо не совсем правильно.

как считаете вот этот код треадсейф?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class SerialNumberGenerator
{
	private static volatile int serialNumber = 0;
	
	public  static int nextSerialNumber()
	{
		return serialNumber++;
	}



То есть вы уверены, что при попытке более одного одного потока вызвать метод nextSerialNumber() у всех потоков будут разные возвращаемые значения?
...
Рейтинг: 0 / 0
13.12.2012, 13:27:04
    #38077559
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
Более древних тем про volatile не нашлось?
...
Рейтинг: 0 / 0
13.12.2012, 13:29:35
    #38077567
0FD
0FD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
roibush,

Странно, только сейчас почему то по rss от ibm пришло http://www.ibm.com/developerworks/library/j-concurrencybugpatterns/ как раз для вас.
...
Рейтинг: 0 / 0
13.12.2012, 13:31:57
    #38077572
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
Я делал краш-тест. Вобщем volatile можете использовать только для булевых переменных.

Все остальные (int/long) атомарно не обновляются. Используйте обёртки AtomicInteger и AtomicLong.
...
Рейтинг: 0 / 0
13.12.2012, 13:34:08
    #38077579
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
maytonЯ делал краш-тест. Вобщем volatile можете использовать только для булевых переменных.
Как на счет byte? :)

maytonВсе остальные (int/long) атомарно не обновляются. Используйте обёртки AtomicInteger и AtomicLong.
При чем тут атомарность? Volatile гарантирует видимость. С атомарностью никак не связано.
...
Рейтинг: 0 / 0
13.12.2012, 13:36:14
    #38077581
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
Нет. Byte Не тестировал. Собственно это была попытка перенести С-шный опыт на Java.
Возможно от этого и не очень удачная.
...
Рейтинг: 0 / 0
13.12.2012, 14:01:20
    #38077645
roibush
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
BlazkowiczmaytonЯ делал краш-тест. Вобщем volatile можете использовать только для булевых переменных.
Как на счет byte? :)

maytonВсе остальные (int/long) атомарно не обновляются. Используйте обёртки AtomicInteger и AtomicLong.
При чем тут атомарность? Volatile гарантирует видимость. С атомарностью никак не связано.

Все верно! гарантирует только видимость, но не атомарность!
Я лично не могу хороший придумать пример, где можно юзать Volatile.
кто нить может подсказать таковой? плиз :)
...
Рейтинг: 0 / 0
13.12.2012, 15:07:21
    #38077871
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
roibushBlazkowiczпропущено...

Как на счет byte? :)

пропущено...

При чем тут атомарность? Volatile гарантирует видимость. С атомарностью никак не связано.

Все верно! гарантирует только видимость, но не атомарность!
Я лично не могу хороший придумать пример, где можно юзать Volatile.
кто нить может подсказать таковой? плиз :)

Есть большая задача(вроде поиска в графе), у которой есть несколько вариантов решения(в глубину в ширину), есть несколько ядер, параллелим задачи на 3, каждая задача смотрит на флаг volatile boolean solved - если фолс - продолжает, если тру - заканчивает. А так вообще примеров миллион, в том числе классические алгоритмы из Art of multiprocessor programming
...
Рейтинг: 0 / 0
14.12.2012, 06:06:19
    #38078810
mesier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
mayton (int/long) атомарно не обновляются. Используйте обёртки AtomicInteger и AtomicLong.
Вероятно это наследие старой JVM, когда для записи int и long априори требовалось более одной команды процессора.
Современные-то JVM наверняка знают о 32-х и 64-хбитных регистрах. Но "для обратной совместимости" оставили.. ))
...
Рейтинг: 0 / 0
14.12.2012, 07:10:16
    #38078827
XDiaBLo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
забыл никroibushпропущено...


Все верно! гарантирует только видимость, но не атомарность!
Я лично не могу хороший придумать пример, где можно юзать Volatile.
кто нить может подсказать таковой? плиз :)

Есть большая задача(вроде поиска в графе), у которой есть несколько вариантов решения(в глубину в ширину), есть несколько ядер, параллелим задачи на 3, каждая задача смотрит на флаг volatile boolean solved - если фолс - продолжает, если тру - заканчивает. А так вообще примеров миллион, в том числе классические алгоритмы из Art of multiprocessor programming
О, спасибо, я искал хорошую книжку на эту тему :)
...
Рейтинг: 0 / 0
14.12.2012, 12:22:06
    #38079186
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
mesiermayton (int/long) атомарно не обновляются. Используйте обёртки AtomicInteger и AtomicLong.
Вероятно это наследие старой JVM, когда для записи int и long априори требовалось более одной команды процессора.
Современные-то JVM наверняка знают о 32-х и 64-хбитных регистрах. Но "для обратной совместимости" оставили.. ))
Я-бы сказал точнее. Каждая имплементация JVM знает о своих регистрах.
Но кодить надо исходя из спецификаций JVM а не целевой архитектуры.
Иначе - фэйл.
...
Рейтинг: 0 / 0
14.12.2012, 13:56:08
    #38079373
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
mesiermayton (int/long) атомарно не обновляются. Используйте обёртки AtomicInteger и AtomicLong.
Вероятно это наследие старой JVM, когда для записи int и long априори требовалось более одной команды процессора.
Современные-то JVM наверняка знают о 32-х и 64-хбитных регистрах. Но "для обратной совместимости" оставили.. ))

int всегда читался и записывался атомарно, long - да, за две операции
...
Рейтинг: 0 / 0
14.12.2012, 17:53:58
    #38079895
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
maytonЯ делал краш-тест. Вобщем volatile можете использовать только для булевых переменных.
Все остальные (int/long) атомарно не обновляются.
Т.е. записывая в одно потоке FFFF а в другом 0000 вы получили FF00?
...
Рейтинг: 0 / 0
14.12.2012, 17:56:47
    #38079902
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
Я выбрал 5 рабочих потоков которые наращивали разделяемую переменную с некратным шагом.
2,3,5,7 e.t. и собрал юнит тест который сверял расчётоное теоретическое значение (я заваедомо его знал)
и фактическое которе принимала разделяемая переменная.
...
Рейтинг: 0 / 0
14.12.2012, 18:02:39
    #38079915
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
maytonЯ выбрал 5 рабочих потоков которые наращивали разделяемую переменную с некратным шагом.
2,3,5,7 e.t. и собрал юнит тест который сверял расчётоное теоретическое значение (я заваедомо его знал)
и фактическое которе принимала разделяемая переменная.
это проблема видимости а не атомарности
...
Рейтинг: 0 / 0
14.12.2012, 18:04:11
    #38079918
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
забыл никmaytonЯ выбрал 5 рабочих потоков которые наращивали разделяемую переменную с некратным шагом.
2,3,5,7 e.t. и собрал юнит тест который сверял расчётоное теоретическое значение (я заваедомо его знал)
и фактическое которе принимала разделяемая переменная.
это проблема видимости а не атомарности

точнее нет, все таки атомарности, но не записи отдельного int, а инкремента
...
Рейтинг: 0 / 0
14.12.2012, 18:21:37
    #38079942
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
забыл никзабыл никпропущено...

это проблема видимости а не атомарности

точнее нет, все таки атомарности, но не записи отдельного int, а инкремента
Так что инкремент всё таки атомарен?
...
Рейтинг: 0 / 0
14.12.2012, 18:45:42
    #38079976
buldozer01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
Коллеги а как же happens-before ?

Что за чушь вы тут несете ?
...
Рейтинг: 0 / 0
14.12.2012, 18:53:06
    #38079987
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
buldozer01Коллеги а как же happens-before ?
Что за чушь вы тут несете ?
Тс-с-с. Мне самому интересно.
...
Рейтинг: 0 / 0
14.12.2012, 18:54:25
    #38079989
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объясните толков что означает слово volatile
buldozer01Коллеги а как же happens-before ?

Что за чушь вы тут несете ?
Дай ссылку на конкретную статью. А-то будем еще спорить о терминологии.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Объясните толков что означает слово volatile / 25 сообщений из 36, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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