小编Ism*_* R.的帖子

为什么`fork()`调用没有在无限循环中优化掉?

考虑到

C++11§1.10/ 24(在[intro.multithread]中)

"实现可以假设任何线程最终将执行以下操作之一:
- 终止,
- 调用库I/O函数,
- 访问或修改易失性对象,或
- 执行同步操作或原子操作.
[注意:这是为了允许编译器转换,例如删除空循环,即使无法证明终止也是如此. - 尾注]

...是允许编译器优化掉以下循环的编译器:

int main(int argc, char* argv[]) {
    while ( true )
        fork();
}
Run Code Online (Sandbox Code Playgroud)

(有一些早期的讨论在(优化掉一个"while(1);"在C++ 0x中),但它似乎没有回答fork循环中调用的情况.)

c++ posix fork c++11

-22
推荐指数
1
解决办法
1112
查看次数

标签 统计

c++ ×1

c++11 ×1

fork ×1

posix ×1