c - 将函数调用作为参数传递给 printf 和 Reentrancy

标签 c multithreading printf reentrancy

据我所知,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/

相关文章:

c++ - 低版本gcc使用的静态库

c# - CRC-16 0x8005 多项式,从 C 到 C#。紧急求救

Java多线程执行器InvokeAll问题

java - 如何在没有 Selenium 网格的情况下在浏览器的多个实例中并行运行单个测试用例

Java - 设置要打印的 double 长度时包括小数点和前面的数字吗?

c - asprintf 有 wchar_t 版本吗?

c - 下面的代码在 C 语言中是如何计算的?

c - 为什么这样实现 log_sum 效率更高?

python - 线程 Python 端口扫描器

c - printf 期间出现访问冲突错误