На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Модераторы: Qraizer
  
> А остался ли описатель volatile в новом стандарте 11 или даже 14? , Мои старые исходники на стандарте 03 с использованием volatile будут ли собираться в стандарте 11 или 14?
    Мой молодой сотрудник сказал, что в студии 2012 года поставил галочку для использования стандарта 11 года. На мой совет описать некоторую переменную его проекта volatile, сказал, что это вариант мьютекса и что она ему не нужна. Я так отстал от жизни, или он ошибается? Переменная описана в классе и доступ к ней происходит из разных потоков, работающих параллельно.
      Цитата a_n_y_a @
      volatile, сказал, что это вариант мьютекса

      Это не мьютекс вообще, и нужен он был изначально вовсе не для синхронизации потоков.

      P.S. Что конкретно нужно в том месте - зависит от логики программы. Если один поток пишет, остальные читают, то хватит и простого volatile. В других случаях - скорее всего потребуется мьютекс.
      Сообщение отредактировано: Pacific -
        Цитата Pacific @
        Цитата a_n_y_a @
        volatile, сказал, что это вариант мьютекса

        Это не мьютекс вообще, и нужен он был изначально вовсе не для синхронизации потоков.

        P.S. Что конкретно нужно в том месте - зависит от логики программы. Если один поток пишет, остальные читают, то хватит и простого volatile. В других случаях - скорее всего потребуется мьютекс.

        Главный поток меняет значение переменной, другие в зависимости от ее значения выполняют некоторые действия. Конкретно потоки выполняют некоторые действия в цикле while(A!=false), главный поток для окончания других потоков устанавливает A = false. Если я правильно помню, volatile означало для транслятора размещать переменную А в памяти, а не в регистре. Я прав? А что сейчас означает volatile в стандартах 11 и 14? Я их читал, но про volatile ничего не нашел. Её смысл остался прежним?
          Цитата a_n_y_a @
          Я прав?

          Нет.
          Цитата a_n_y_a @
          А что сейчас означает volatile в стандартах 11 и 14?

          Чтобы компилятор не делал никаких предположений о возможном содержимом переменной.

          Добавлено
          Цитата a_n_y_a @
          На мой совет описать некоторую переменную его проекта volatile, сказал, что это вариант мьютекса и что она ему не нужна.

          Молодой сотрудник не знаком ни с мьютексами ни с volatile.
            Нет Аня, ты не праВ ) volatile указывает компилятору что знаение переменной может быть изменено из вне в любой момент, по этому компилятор отрубает все оптимизации в отношении этой переменной.
            Сообщение отредактировано: Painkiller -
              Цитата Painkiller @
              Нет Аня, ты не праВ ) volatile указывает компилятору что знаение переменной может быть изменено из вне в любой момент, по этому компилятор отрубает все оптимизации в отношении этой переменной.

              Ясно, спасибо.
                Цитата a_n_y_a @
                Главный поток меняет значение переменной, другие в зависимости от ее значения выполняют некоторые действия. Конкретно потоки выполняют некоторые действия в цикле while(A!=false), главный поток для окончания других потоков устанавливает A = false.

                В такой постановке задачи - да, как раз нужно использовать volatile.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0268 ]   [ 17 queries used ]   [ Generated: 28.03.24, 23:55 GMT ]