我一直在看Mike Acton 关于 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
is __restrict__
ed?
-
__restrict__
C++ 中没有标准化,因此这个问题只能在特定平台上回答。对于海湾合作委员会,您可以申请__restrict__
to this
以同样的方式 as const
:
void T::fn () __restrict__
-
您的示例中不存在潜在的别名。 C++ 指定了数据争用的未定义行为。
-
A 新系统C++ 的受限指针正在开发中。它可能会在 C++17 中标准化。支持this
是既定的设计目标之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)