【发布时间】:2014-08-24 17:16:51
【问题描述】:
假设有如下代码
void func1() // first way
{
CRITICALSECTIONTYPE CS;
ENTERCRITICALSECTION(CS);
int x = getValue();
LEAVECRITICALSECTION(CS);
}
void func2() // second way
{
int x;
CRITICALSECTIONTYPE CS;
ENTERCRITICALSECTION(CS);
x = getValue();
LEAVECRITICALSECTION(CS);
}
与第二种方式相比,第一种方式的性能开销是否有任何(甚至是最轻微的)可能性?有什么特定于编译器优化它的吗? 首选汇编代码回答。谢谢:)
【问题讨论】:
-
你知道你可以让编译器为你自己输出汇编代码列表,对吧?
/FAs在 MSVC 上,-S在 GCC 上。节省了每次都问一个问题,这不是很好的扩展。 -
@Codegray,这个技巧只有在你知道如何阅读汇编代码的情况下才有效。
-
应该没有任何区别。您应该能够在一个简单的程序中对其进行测试。
标签: c++ multithreading visual-c++ gcc critical-section