据我所知,printf()是线程安全的,不是可重入的。现在,如果我将函数调用的结果作为参数传递,如下所示:
printf("\"%d\" squared is \"%d\".\n", 5, squareOfInteger(5));在多线程程序中,函数squareofInteger也会变成线程安全吗?
发布于 2017-05-31 16:25:44
不是的。反例:
int squareOfInteger(int x)
{
static int val;
val = x*x; /* Possible race condition here */
return val;
}在调用printf并将结果传递给printf之前,此函数由不同的线程(并发)进行计算。
https://stackoverflow.com/questions/44276776
复制相似问题