Могу ли я как-то ограничить это?
Я смотрелДоклад Майка Актона о Data-ориентированном дизайне в C ++ в CppCon 2014, и он приводит этот пример:
int Foo::Bar(int count)
{
int value = 0;
for (int i = 0; i < count; i++) {
if (m_someDataMemberOfFoo) value++
}
return value;
}
И объясняет, как некоторые компиляторы продолжают перечитыватьm_someDataMemberOfFoo
в каждой итерации, возможно, потому что его значение может меняться из-за одновременного доступа. Независимо от того, уместно ли это делать компилятору - можно ли сказать компилятору специально игнорировать любую возможность одновременного доступа к чему-либо во время выполнения какого-либо метода, чтобы он мог лучше оптимизироваться?
Другими словами, могу ли я сказать компилятору, чтоthis
является__restrict__
ред?