当前位置:  开发笔记 > 编程语言 > 正文

InterlockedIncrement用法

如何解决《InterlockedIncrement用法》经验,为你挑选了1个好方法。

在阅读InterlockedIncrement函数时,我看到了传递的变量必须在32位边界上对齐的注释.通常我见过使用InterlockedIncrement的代码,如下所示:

class A
{
 public:
   A();
   void f();

 private:
  volatile long m_count;
};

A::A() : m_count(0)
{
}

void A::f()
{
  ::InterlockedIncrement(&m_count);
}

以上代码在多处理器系统中是否正常工作,还是应该更加关注?



1> Torlack..:

这取决于您的编译器设置.但是,默认情况下,任何八个字节及以下的内容都将在自然边界上对齐.因此,"int"我们在32位边界上对齐.

此外,"#pragma pack"指令可用于更改编译单元内的对齐.

我想补充一点,答案假设是Microsoft C/C++编译器.打包规则可能因编译器而异.但总的来说,我认为大多数Windows的C/C++编译器使用相同的打包默认值只是为了使Microsoft SDK头更容易使用.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有