静态内联函数是否安全?

场景:我编写了一大段代码,运行在2个并行线程上,这些线程在代码方面是相同的,只是处理不同的数据。 我看到了非确定性的结果。 如果我禁用2个线程中的一个,结果将变为确定性。 在这段代码中我使用了一些静态内联函数(主要原因:它们是我需要的小函数,我只需要在需要它们的翻译单元中复制代码),我想了解它们是否存在可能是我的问题的可能原因。

C中的静态内联函数是否是线程安全的? 反过来说,如果他们内部没有静态变量,但只有一些局部变量和输入参数,那么从2个线程同时调用会导致不可预测的行为吗?

不,那真的应该没问题。

函数是否内联不应该影响这一点,因为它无论如何都只是代码。

这种行为在实际的内存数据(结果)方面是不确定的,还是“只是”事件的时间和顺序等事情?

您是否可能写入参数,意外创建数据竞争?

C中的静态内联函数是否是线程安全的?

是。 静态内联函数对线程安全性没有影响。 但是如果你使用静态变量,那么你必须要小心。

如果它们内部没有静态变量,但只有一些局部变量和输入参数,那么来自2个线程的同时调用是否会导致不可预测的行为?

如果您使用的是局部变量,那么您将不会遇到任何问题。 因为每个线程都有自己的堆栈内存。