据我所知,printf()
是线程安全的并且不可重入。
现在,如果我像这样将函数调用的结果作为参数传递:
printf("\"%d\" squared is \"%d\".\n", 5, squareOfInteger(5));
squareofInteger
函数在多线程程序中也会成为线程安全的吗?
最佳答案
没有。反例:
int squareOfInteger(int x)
{
static int val;
val = x*x; /* Possible race condition here */
return val;
}
此函数在 printf
被调用之前由不同的线程(并发)求值,并将结果交给 printf
。
关于c - 将函数调用作为参数传递给 printf 和 Reentrancy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44276776/