我一直在看Mike Acton 在 CppCon 2014 上关于 C++ 中面向数据的设计的演讲,他举了这个例子:
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__
ed 的编译器吗?