我可以以某种方式“__restrict__ this”吗?

2023-11-29

我一直在看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?


  1. __restrict__C++ 中没有标准化,因此这个问题只能在特定平台上回答。对于海湾合作委员会,您可以申请__restrict__ to this 以同样的方式 as const:

    void T::fn () __restrict__
    
  2. 您的示例中不存在潜在的别名。 C++ 指定了数据争用的未定义行为。

  3. A 新系统C++ 的受限指针正在开发中。它可能会在 C++17 中标准化。支持this是既定的设计目标之一。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以以某种方式“__restrict__ this”吗? 的相关文章

随机推荐