Лучший отвечающий
Объявление переменной с ключевым словом volatile

Вопрос
-
Скажите, пожалуйста, правильно ли приведённое ниже объявление для переменной, которая используется в двух потоках "А" и "В". Один раз ей присваивается значение в потоке "А". Затем, потоке "В", ей переприсваивается (уже другое) значение и, кроме того, там же (в потоке "В") её значение несколько раз проверяется в операторах if - else? И не "мешают" ли друг-другу ключевые слова static и volatile в одном объявлении?
private static volatile Int32 myInt32Var;
Сама переменная myInt32Var объявлена как член класса главного окна приложения WPF.
- Изменено TownSparrow 5 сентября 2012 г. 16:27
5 сентября 2012 г. 16:23
Ответы
-
С этой штукой нужно быть очень осторожным. Почитайте пост по ссылке ниже, может откажетесь от её использования или наоборот поймете, что это как раз то что нужно для решения вашей задачи:
http://stackoverflow.com/questions/154551/volatile-vs-interlocked-vs-lock
- Помечено в качестве ответа TownSparrow 6 сентября 2012 г. 8:03
6 сентября 2012 г. 7:22Отвечающий
Все ответы
-
С этой штукой нужно быть очень осторожным. Почитайте пост по ссылке ниже, может откажетесь от её использования или наоборот поймете, что это как раз то что нужно для решения вашей задачи:
http://stackoverflow.com/questions/154551/volatile-vs-interlocked-vs-lock
- Помечено в качестве ответа TownSparrow 6 сентября 2012 г. 8:03
6 сентября 2012 г. 7:22Отвечающий -
Да, к стати сказать - объявление volatile многие "ругают". Я вчера почитал посты на Byte и в них тоже её "скребут крупной шкуркой". Предложенный вами пост я обязательно прочитаю.
6 сентября 2012 г. 8:03 -
Привет.
1) Исходя из описание вашей задачи - у вас последовательные действия, просто с разных потоков. Проблемы могут возникнуть при одновременном изменение переменной в одном потоке и чтении в другом. Если же потоки запускаются по очереди и к моменту запуска 2го потока 1ый уже все необходимые действия сделал с этой переменной - то проблем не должно возникнуть и вообще volatile лишнее.
2) Static никак не должен влиять
Для связи [mail]
7 сентября 2012 г. 9:47