调用gcc _without_ -pthread有什么好处?

时间:2016-03-18 08:52:41

标签: c++ c gcc compilation

我们知道添加-pthread makes GCC use reentrant/thread-safe code(编译C / C ++代码时)。虽然我认为这是真的,如果你允许不可重入,你可以在这里和那里保存几个周期 - 我想知道总是指定{{是否有任何实际优势1}}。有吗?

2 个答案:

答案 0 :(得分:4)

一个例子:std::shared_ptr doesn't use locking when compiled without -pthread的libstdc ++实现,如果你在单线程环境中大量使用共享指针,它可以很好地提升性能。

答案 1 :(得分:0)

在c ++中,语言的哲学一直是“你不为你不需要的东西买单”。如果您的程序运行单线程并且不需要可重入函数,则没有真正的动机来添加-pthread

使用可重入函数的成本总是高于或等于函数的非重入版本。及时(你必须锁定互斥锁以保护变量),或者为每个函数调用分配内存而不是使用静态缓冲区。

此外,某些平台可能没有pthreads实现(毕竟pthreads是一个POSIX事物。)