Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.snto-msu.net/showflat.php?Number=9164261&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Wed Apr 13 05:00:30 2016
Кодировка: Windows-1251
[c] volatile objects accessing - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 1
genom
нап-гедонист

Рег.: 28.12.2005
Сообщений: 1762
Рейтинг: 1378
  [c] volatile objects accessing
      21.12.2009 23:17
 

Вопросы по обращениям к volatile - переменным

По стандарту
1) компилятор имеет право переставлять обращения к разным volatile переменным?
2) компилятор имеет право переставлять обращение volatile переменной и запись в "обычную" переменную?


курил стандарт, но не могу докурить...( (возможно, отчасти из-за недостаточного знания английского)

там написано, что expression reffering to such an object (volatile то бишь) должны вычисляться строго в сответсвии с abstract semantic, а по abstract semantic все обращения к volatile-переменным, записи во все переменные oбъявляются как имеющие side effect (и =>, как я понимаю, не могут быть переставлены). Но в то же время, сказано, что actual semantic (то бишь, то, что позволено делать копмилятору) может отличаться от abstract (но должна совпадать на вызовах, пересекающих compilation unit boundaries и еще где-то). Ну а если речь просто о последовательном коде внутри одной функции, то какие будут ответы на первые два вопроса?







Holy fuck that was great
holy god fuck shit balls
monoid

Рег.: 14.02.2004
Сообщений: 1689
Из: ГЗ::Б::12
Рейтинг: 1331
  Re: [c] volatile objects accessing [re: genom]
      22.12.2009 01:09
3

1) нет
2) да



#
blind
still alive

Рег.: 16.01.2004
Сообщений: 23128
Из: Хамовники
Рейтинг: 16483
  Re: [c] volatile objects accessing [re: monoid]
      22.12.2009 09:22
 

В ответ на:

2) да



даже если он не уверен что они не алиасятся? как же тогда барьеры работают?
#define mb() asm volatile ("": : :"memory")



13/37 =)
monoid

Рег.: 14.02.2004
Сообщений: 1689
Из: ГЗ::Б::12
Рейтинг: 1331
  Re: [c] volatile objects accessing [re: blind]
      22.12.2009 10:41
 

Для "обычных переменных", а не объектов, доступных через указатель, проблема алиасинга не стоит. Хотя, конечно, мне стоило сразу об этом написать. И, кстати, не факт, что разыменование volatile int* в C является барьером - из-за type-based pointer disambiguation.



#
horror
гонобобель

Рег.: 30.09.2002
Сообщений: 3784
Рейтинг: 2137
  Re: [c] volatile objects accessing [re: genom]
      22.12.2009 14:00
-2

Quote:

По стандарту
1) компилятор имеет право переставлять обращения к разным volatile переменным?
2) компилятор имеет право переставлять обращение volatile переменной и запись в "обычную" переменную?




интуитивный ответ
1) да
2) да
не вижу препон, буду рад услышать обоснованные опровержения моего необоснованного мнения :grin:

monoid

Рег.: 14.02.2004
Сообщений: 1689
Из: ГЗ::Б::12
Рейтинг: 1331
  Re: [c] volatile objects accessing [re: horror]
      22.12.2009 14:08
 

Quote:

1) да



неопределенность в порядке доступа к volatile объектам есть только между sequence points



#
genom
нап-гедонист

Рег.: 28.12.2005
Сообщений: 1762
Рейтинг: 1378
  Re: [c] volatile objects accessing [re: monoid]
      22.12.2009 22:29
 

спс, а вот насчет второго вопроса это в стандарте явно где-то написано?

потому что я пока не понял, если опираться только на стандарт, то ли он это явно разрешает , то ли об этом умалчивает (типа implementation defined) и де-факто некоторые компиляторы переставляют (кстати, такие компиляторы есть? т.е. пример иходника, компилятора и чтобы в ассемблере было видно что обращения переставились)

Самое, как мне кажется, близкое из стандарта, что я нашел:
The least requirements on a conforming implementation are:
- At sequence points, volatile objects are stable in the sense that previous accesses are
   complete and subsequent accesses have not yet occurred.
...

но тут ничего не говорится про не volatile objects...




Holy fuck that was great
holy god fuck shit balls
Grig
Carpal Tunnel

Рег.: 03.02.2004
Сообщений: 5344
Из: Глубокое замкадье
Рейтинг: 7053
  Re: [c] volatile objects accessing [re: genom]
      22.12.2009 22:39
4

На твои вопросы действительно краткие ответы будут 1) нет 2) да
Категорически рекомендую прочитать статью

C++ and the Perils of Double-Checked Locking
Scott Meyers and Andrei Alexandrescu
September 2004
http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf

Там как раз про гарантии стандарта по поводу порядка доступа и volatile




genom
нап-гедонист

Рег.: 28.12.2005
Сообщений: 1762
Рейтинг: 1378
  Re: [c] volatile objects accessing [re: Grig]
      22.12.2009 22:59
 

да , мне судя по всему нужны какие-нибудь "комментарии"

спс за ссылку, ща почитаю...



Holy fuck that was great
holy god fuck shit balls
vozbu
karamba

Рег.: 14.11.2004
Сообщений: 4856
Рейтинг: 1057
  Re: [c] volatile objects accessing [re: Grig]
      25.12.2009 10:51
 

В ответ на:

C++ and the Perils of Double-Checked Locking
Scott Meyers and Andrei Alexandrescu
September 2004
http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf



Спасибо. Каждый раз читаю что-то подобное и удивляюсь, как программы на C/C++ вообще работают.



С тех пор, как изобрели речь, люди не могут договориться друг с другом.
blind
still alive

Рег.: 16.01.2004
Сообщений: 23128
Из: Хамовники
Рейтинг: 16483
  Re: [c] volatile objects accessing [re: vozbu]
      25.12.2009 11:06
 

ты много знаешь программ (особенно на c++) где активно используется самодельная синхронизация?



13/37 =)
vozbu
karamba

Рег.: 14.11.2004
Сообщений: 4856
Рейтинг: 1057
  Re: [c] volatile objects accessing [re: blind]
      25.12.2009 12:16
 

В смысле, межпотоковая, не используя библиотеки типа pthreads? Не знаю ни одной. А это меняет суть дела?



С тех пор, как изобрели речь, люди не могут договориться друг с другом.
blind
still alive

Рег.: 16.01.2004
Сообщений: 23128
Из: Хамовники
Рейтинг: 16483
  Re: [c] volatile objects accessing [re: vozbu]
      25.12.2009 12:42
 

такие библиотеки пишут и тестируют умные люди



13/37 =)
vozbu
karamba

Рег.: 14.11.2004
Сообщений: 4856
Рейтинг: 1057
  Re: [c] volatile objects accessing [re: blind]
      25.12.2009 13:28
 

Ты, ээ, читал указанный документ? Я не понимаю, чего ты привязался к этим библиотекам. Использовать "крутую" библиотеку не значит написать работающей программы.



С тех пор, как изобрели речь, люди не могут договориться друг с другом.
blind
still alive

Рег.: 16.01.2004
Сообщений: 23128
Из: Хамовники
Рейтинг: 16483
  Re: [c] volatile objects accessing [re: vozbu]
      25.12.2009 14:56
 

конечно нет

правильно использовать правильную библиотеку значительно проще



13/37 =)
Fj_
Carpal Tunnel

Рег.: 12.09.2004
Сообщений: 8795
Рейтинг: 3287
  Re: [c] volatile objects accessing [re: blind]
      26.12.2009 01:48
 

"конечно нет" видимо относится к вопросу "Ты, ээ, читал указанный документ?"

Ты знаешь какую-нибудь библиотеку для плюсов, предоставляющую lightweight инициализацию синглтонов?



The data is the error (c)IIS FTP Server.
blind
still alive

Рег.: 16.01.2004
Сообщений: 23128
Из: Хамовники
Рейтинг: 16483
  Re: [c] volatile objects accessing [re: Fj_]
      26.12.2009 10:18
 

да

не знаю. проблема чтоб сделать это без лока когда его создавать ломится куча трэдов?



13/37 =)
Страницы: 1

Technical >> Development (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в