Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C _联锁比较交换与联锁比较交换_C_Visual Studio_Assembly_X86_Windows 7 X64 - Fatal编程技术网

C _联锁比较交换与联锁比较交换

C _联锁比较交换与联锁比较交换,c,visual-studio,assembly,x86,windows-7-x64,C,Visual Studio,Assembly,X86,Windows 7 X64,我正在开发一个非常专业和优化的内核代码(目标是Windows7到Windows10,x64),我需要一些互锁的intrisic,特别是_interloctedcompareeexchange。文档中说该函数有许多变体,但对其中一些变体的描述相当模糊。MSDN说“带有_np(“无预取”)后缀的内部函数阻止编译器插入可能的预取操作”。这是否意味着编译器可能会通过重新排序指令来打乱我的代码?我应该一直使用“\u np”版本吗?我尝试了这两个函数,得到的机器代码是相同的。任何提示?x86仅为提示;它们不

我正在开发一个非常专业和优化的内核代码(目标是Windows7到Windows10,x64),我需要一些互锁的intrisic,特别是_interloctedcompareeexchange。文档中说该函数有许多变体,但对其中一些变体的描述相当模糊。MSDN说“带有_np(“无预取”)后缀的内部函数阻止编译器插入可能的预取操作”。这是否意味着编译器可能会通过重新排序指令来打乱我的代码?我应该一直使用“\u np”版本吗?我尝试了这两个函数,得到的机器代码是相同的。任何提示?

x86仅为提示;它们不会改变内存排序语义。但是,它们会影响性能。啊,太好了!我没想到我们必须接受“预取操作”这个表达式的字面意思(但我会写“预取指令”)。我建议在正式回复中推广您的评论。我不是为Windows开发的,所以我将留给了解这些Windows函数及其MSVC实现的其他人来写一个回答,说明它们的有用和有趣之处。x86只是提示;它们不会改变内存排序语义。但是,它们会影响性能。啊,太好了!我没想到我们必须接受“预取操作”这个表达式的字面意思(但我会写“预取指令”)。我建议在正式答复中推广您的评论。我不是为Windows开发的,所以我将把它留给了解Windows功能及其MSVC实现的其他人,让他们写一个关于这些功能的有用和有趣的答复。