Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.92.96.247] |
|
Сообщ.
#1
,
|
|
|
Мой молодой сотрудник сказал, что в студии 2012 года поставил галочку для использования стандарта 11 года. На мой совет описать некоторую переменную его проекта volatile, сказал, что это вариант мьютекса и что она ему не нужна. Я так отстал от жизни, или он ошибается? Переменная описана в классе и доступ к ней происходит из разных потоков, работающих параллельно.
|
Сообщ.
#2
,
|
|
|
Цитата a_n_y_a @ volatile, сказал, что это вариант мьютекса Это не мьютекс вообще, и нужен он был изначально вовсе не для синхронизации потоков. P.S. Что конкретно нужно в том месте - зависит от логики программы. Если один поток пишет, остальные читают, то хватит и простого volatile. В других случаях - скорее всего потребуется мьютекс. |
Сообщ.
#3
,
|
|
|
Цитата Pacific @ Цитата a_n_y_a @ volatile, сказал, что это вариант мьютекса Это не мьютекс вообще, и нужен он был изначально вовсе не для синхронизации потоков. P.S. Что конкретно нужно в том месте - зависит от логики программы. Если один поток пишет, остальные читают, то хватит и простого volatile. В других случаях - скорее всего потребуется мьютекс. Главный поток меняет значение переменной, другие в зависимости от ее значения выполняют некоторые действия. Конкретно потоки выполняют некоторые действия в цикле while(A!=false), главный поток для окончания других потоков устанавливает A = false. Если я правильно помню, volatile означало для транслятора размещать переменную А в памяти, а не в регистре. Я прав? А что сейчас означает volatile в стандартах 11 и 14? Я их читал, но про volatile ничего не нашел. Её смысл остался прежним? |
Сообщ.
#4
,
|
|
|
Цитата a_n_y_a @ Я прав? Нет. Цитата a_n_y_a @ А что сейчас означает volatile в стандартах 11 и 14? Чтобы компилятор не делал никаких предположений о возможном содержимом переменной. Добавлено Цитата a_n_y_a @ На мой совет описать некоторую переменную его проекта volatile, сказал, что это вариант мьютекса и что она ему не нужна. Молодой сотрудник не знаком ни с мьютексами ни с volatile. |
Сообщ.
#5
,
|
|
|
Нет Аня, ты не праВ ) volatile указывает компилятору что знаение переменной может быть изменено из вне в любой момент, по этому компилятор отрубает все оптимизации в отношении этой переменной.
|
Сообщ.
#6
,
|
|
|
Цитата Painkiller @ Нет Аня, ты не праВ ) volatile указывает компилятору что знаение переменной может быть изменено из вне в любой момент, по этому компилятор отрубает все оптимизации в отношении этой переменной. Ясно, спасибо. |
Сообщ.
#7
,
|
|
|
Цитата a_n_y_a @ Главный поток меняет значение переменной, другие в зависимости от ее значения выполняют некоторые действия. Конкретно потоки выполняют некоторые действия в цикле while(A!=false), главный поток для окончания других потоков устанавливает A = false. В такой постановке задачи - да, как раз нужно использовать volatile. |
Сообщ.
#8
,
|
|
|