首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编译器优化,线程安全?

编译器优化,线程安全?
EN

Stack Overflow用户
提问于 2012-06-05 15:16:33
回答 3查看 906关注 0票数 6

我有一个关于编译器可能做的优化的问题。

下面的代码将说明问题(这是一个示例):

代码语言:javascript
运行
复制
typedef struct  test
{
  short i;
}               s_test;

int function1(char *bin)
{
  s_test foo;

  lock(gmutex);
  foo.i = *(int*)bin * 8;
  unlock(gmutex);

  sleep(5);
  //
  // Here anything can happen to *bin in another thread
  // an inline example here could be: *(volatile int *)bin = 42;
  //

  int b = foo.i + sizeof(char*);

  return (b > 1000);
}

编译器是否会将最后一行替换为

代码语言:javascript
运行
复制
return ((*(int*)bin * 8 + sizeof(char*)) > 1000);
EN

Stack Overflow用户

发布于 2012-06-05 15:31:55

我不认为编译器会做这样的优化。

代码语言:javascript
运行
复制
unlock(gmutex)

这是函数,编译器不能假定在解锁函数中bin指向的值是否会改变。

例如,也许bin来自一个globe。因此,bin的优化不能跨越函数调用。

票数 5
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10893148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档