C++ 在没有线程的情况下调用gcc_有什么好处吗?
我们知道添加C++ 在没有线程的情况下调用gcc_有什么好处吗?,c++,c,gcc,compilation,C++,C,Gcc,Compilation,我们知道添加-pthread(在编译C/C++代码时)。虽然我想如果允许不可重入,您可能会在这里或那里节省一些周期,但我想知道不总是指定-pthread是否有任何实际优势。在C++中,哲学的哲学一直是“你不为你不需要的东西付出代价”。如果您的程序运行单线程并且不需要可重入函数,那么就没有真正的动机来添加-pthread 使用可重入函数的成本总是高于或等于函数的非重入版本。要么在时间上(必须锁定互斥锁以保护变量),要么在每次函数调用时分配内存,而不是使用静态缓冲区 此外,一些平台可能没有pthre
-pthread
(在编译C/C++代码时)。虽然我想如果允许不可重入,您可能会在这里或那里节省一些周期,但我想知道不总是指定-pthread
是否有任何实际优势。在C++中,哲学的哲学一直是“你不为你不需要的东西付出代价”。如果您的程序运行单线程并且不需要可重入函数,那么就没有真正的动机来添加-pthread
使用可重入函数的成本总是高于或等于函数的非重入版本。要么在时间上(必须锁定互斥锁以保护变量),要么在每次函数调用时分配内存,而不是使用静态缓冲区
此外,一些平台可能没有
pthreads
实现(pthreads
毕竟是POSIX的东西)。一个例子是std::shared\ptr的libstdc++实现,如果您在单线程环境中大量使用共享指针,这可以很好地提高性能。我看不出它是如何回答这个问题的。@YSC:事实上,我认为这是一个正确的观点。强迫你重新进入是“有条不紊的”。这种一致性是一种好处。@YSC:的确,我本可以更清楚地说明,使用某些函数的可重入版本总是会带来性能成本(例如,我不知道strok和strok_r,所以如果您不需要pthread(性能是个问题)您可能不想使用它。OP已经知道了这一点。具体细节应该是一个好的答案。嗯……第(1)段和第(3)段与问题无关。第(2)段触及了主题,但暗示-pthread强制重新进入(并影响性能)这需要一些证据,或者至少是一个不错的例子,IMO。生成的代码无论如何都不是可重入的?我不知道gcc使用起来如此不安全……或者你只是指库?我可以理解:)@MartinJames:我是指链接中描述的意思<代码>#定义可重入
取决于-lpthread
。我不确定到底发生了什么变化;但这里的答案已经给出了一个不小的例子。