-
- В выражении tail > head последовательность чтения переменных в общем случае не совсем определена, если они не volatile (для последних порядок сохраняется, но только относительно самих этих переменных, а не других переменных, памяти адресуемой по fk0(437 знак., 09.11.2017 23:53)
- Тогда уж дал бы ссылку на оригинал, а то сам переврал половину и выкинул существенные подробности. Вообще да, товарищ любопытно проиллюстрировал проблему. Это я не про поло, а про пример кода. - SciFi(09.11.2017 12:44, ссылка)
- Где и чего переврато? И какие существенные подробности опущены? Как раз адаптировано под потенциальные проблемы работы с буфером, что мне лично актуально и про что я объявил. - Petrovich(09.11.2017 12:49, )
- Есличо, порядок чтения переменных в выражении "if(tail>head)" не определён. Поэтому и нужны локальные переменные, как в оригинале. - SciFi(09.11.2017 12:59)
- Локальные? А что они дадут кроме надежды, что оптимизатор их не выкинет? - Мутон(10.11.2017 07:58, )
- Читайте мануалы. Они дают гарантированный порядок чтения переменных. Когда они volatile, компилятор не нарушит этот порядок. SciFi(251 знак., 10.11.2017 08:19)
- Перестаньте додумывать про volatile! Где они? У автора это просто переменные. - Мутон(10.11.2017 08:28, )
- Очевидно, автор иллюстрировал концепцию, не слишком погружаясь в детали. Конечно, зануда написал бы вот так: SciFi(423 знак., 10.11.2017 08:31 - 08:35)
- Тогдатк чему все жто? Именно про схематичность постановки и решения указывал и ТС. Для алгоритма не важно волатильность или локальность, важно что эта проблема и для Кортексов и для 8080. - Мутон(10.11.2017 08:37, )
- Ну да. Аффтару нужно было писАть на псевдоезыке, тогда и повода для срача не было бы. - SciFi(10.11.2017 08:44)
- Тогдатк чему все жто? Именно про схематичность постановки и решения указывал и ТС. Для алгоритма не важно волатильность или локальность, важно что эта проблема и для Кортексов и для 8080. - Мутон(10.11.2017 08:37, )
- Очевидно, автор иллюстрировал концепцию, не слишком погружаясь в детали. Конечно, зануда написал бы вот так: SciFi(423 знак., 10.11.2017 08:31 - 08:35)
- Перестаньте додумывать про volatile! Где они? У автора это просто переменные. - Мутон(10.11.2017 08:28, )
- Читайте мануалы. Они дают гарантированный порядок чтения переменных. Когда они volatile, компилятор не нарушит этот порядок. SciFi(251 знак., 10.11.2017 08:19)
- На самом деле определён, слева направо же. Но у него переменные не volatile, поэтому переставляет, видимо. - fk0(09.11.2017 23:56)
- С этого места поподробнее! Где это написано? Правильно, нигде. И даже написано, что не определён. SciFi(224 знак., 10.11.2017 07:30 - 08:27)
- +1 - Vit(09.11.2017 13:38)
- Для понимания потенциальной проблемы сие неважно, это же функциональная схема а не готовая программа. Может, применить две локальные копии, может - одну переменную и геттер... - Petrovich(09.11.2017 13:17, )
- Локальные? А что они дадут кроме надежды, что оптимизатор их не выкинет? - Мутон(10.11.2017 07:58, )
- Есличо, порядок чтения переменных в выражении "if(tail>head)" не определён. Поэтому и нужны локальные переменные, как в оригинале. - SciFi(09.11.2017 12:59)
- Где и чего переврато? И какие существенные подробности опущены? Как раз адаптировано под потенциальные проблемы работы с буфером, что мне лично актуально и про что я объявил. - Petrovich(09.11.2017 12:49, )