Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在没有线程的情况下调用gcc_有什么好处吗?_C++_C_Gcc_Compilation - Fatal编程技术网

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
。我不确定到底发生了什么变化;但这里的答案已经给出了一个不小的例子。