不使用-pthread调用gcc有什么优势吗?(问题标题)

4
我们知道在编译C/C++代码时添加-pthread参数可以使GCC使用可重入/线程安全的代码。虽然允许非可重入可能可以节省一些时间,但我想知道是否实际上不总是指定-pthread有任何实际优势。这样做有什么好处吗?

生成的代码无论如何都不是可重入的吗?我不知道gcc使用起来如此不安全。 - Martin James
还是你只是指库?那我可以理解 :) - Martin James
@MartinJames:我是指链接中描述的那种意义。#define REENTRANT 依赖于 -lpthread。我不确定会发生什么变化;但这里的答案已经提供了一个非常重要的例子。 - einpoklum
2个回答

4

0
在C++中,语言的哲学一直是“你不需要的东西就不要付费”。如果您的程序运行单线程且不需要可重入函数,则没有真正的动力添加-pthread
使用可重入函数的成本始终会高于或等于函数的非可重入版本。无论是时间(您必须锁定互斥量以保护变量),还是为每个函数调用分配内存而不是使用静态缓冲区。
此外,某些平台可能没有pthreads实现(毕竟pthreads是POSIX的东西)。

2
我不明白它如何回答这个问题。 - YSC
@YSC:实际上我认为这是一个有价值的观点。强制让你重新进入会导致“方法不一致”,这种一致性是一种好处。 - einpoklum
@YSC:确实,我本可以更清楚地表达使用某些函数的可重入版本始终会带来性能成本(例如,从我脑海中想到的是strok和strok_r),因此如果您不需要pthread(并且性能很重要),您可能不想使用它。 - Louen
1
OP已经知道了。一个好的答案需要具体细节。 - YSC
嗯...第一段和第三段与问题无关。第二段涉及到了这个话题,但是暗示了-pthread可以强制实现可再进入性(并且会影响性能),需要一些证据或至少一个合理的例子。 - P.P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接