Re[3]: ужас
От: Шахтер Интернет  
Дата: 20.01.05 01:49
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Здравствуйте, Seriously Serious, Вы писали:


SS>>От этого всего у меня вопросы:

SS>>1) Гарантируется ли что-нибудь относительно порядка вызова функций синхронизации? или компилятор тут тоже может оптимизировать как захочет?

ME>Гарантируется. После вызова "непрозрачной" ф-ции компилятор будет перечитывать значения всех переменных из памяти. В противном случае даже single threaded код работать не будет.


ME>У компилятора просто нет никакой возможности установить, что изменяет "непрозрачная" ф-ция. К примеру, C++ runtime может сохранить адреса всех глобальных переменных и любая "непрозрачная" ф-ция может изменить значение какой либо глобальной переменной не принимая ее адреса явно в качестве параметра вызова. Компилятору знание об эффектах "непрозрачных функций" недоступно, поэтому ему придется перечитывать все переменные из памяти.


ME>Ok, компилятору, обычно, известны эффекты всех ф-ций, которые выполняет его же C++ runtime, но это был лишь пример, и вместо C++ runtime может выступать любой C/C++ API, к исходникам которого у компилятора нет доступа.


Ты забываешь про глобальную оптимизацию. В общем случае, гадать, что компилятор может соптимизировать, а что нет -- бесполезное занятие. Все такие догадки релевантны только применительно к конкретной платформе.

SS>>2) Имеет ли право компилятор все переменные держать в регистрах? (где об этом в стандарте сказано?)


ME>Имеет, но см. п.1.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.