我们知道添加-pthread
makes GCC use reentrant/thread-safe code(编译C / C ++代码时)。虽然我认为这是真的,如果你允许不可重入,你可以在这里和那里保存几个周期 - 我想知道不总是指定{{是否有任何实际优势1}}。有吗?
答案 0 :(得分:4)
一个例子:std::shared_ptr
doesn't use locking when compiled without -pthread
的libstdc ++实现,如果你在单线程环境中大量使用共享指针,它可以很好地提升性能。
答案 1 :(得分:0)
在c ++中,语言的哲学一直是“你不为你不需要的东西买单”。如果您的程序运行单线程并且不需要可重入函数,则没有真正的动机来添加-pthread
。
使用可重入函数的成本总是高于或等于函数的非重入版本。及时(你必须锁定互斥锁以保护变量),或者为每个函数调用分配内存而不是使用静态缓冲区。
此外,某些平台可能没有pthreads
实现(毕竟pthreads
是一个POSIX事物。)