none
Объявление переменной с ключевым словом volatile RRS feed

  • Вопрос

  • Скажите, пожалуйста, правильно ли приведённое ниже объявление для переменной, которая используется в двух потоках "А" и "В". Один раз ей присваивается значение в потоке "А". Затем, потоке "В", ей переприсваивается (уже другое) значение и, кроме того, там же (в потоке "В") её значение несколько раз проверяется в операторах 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
    Отвечающий
  • Да, к стати сказать - объявление volatile многие "ругают". Я вчера почитал посты на Byte и в них тоже её "скребут крупной шкуркой". Предложенный вами пост я обязательно прочитаю.

    6 сентября 2012 г. 8:03
  • Привет.

    1) Исходя из описание вашей задачи - у вас последовательные действия, просто с разных потоков. Проблемы могут возникнуть при одновременном изменение переменной в одном потоке и чтении в другом. Если же потоки запускаются по очереди и к моменту запуска 2го потока 1ый уже все необходимые действия сделал с этой переменной - то проблем не должно возникнуть и вообще volatile лишнее.

    2) Static никак не должен влиять


    Для связи [mail]

    7 сентября 2012 г. 9:47