包含线程局部变量的函数是否可重入?

时间:2017-05-22 02:42:29

标签: c++ c thread-safety reentrancy

使用 thread_local 变量作为示例获取以下代码:

void func() {
    thread_local int a;
    ......
}

根据Wikipedia,我知道它是 thread_safety 函数。但是我们是否应该将其称为重入功能?

1 个答案:

答案 0 :(得分:0)

线程安全!=重新入侵。

可以中断重入函数(比如中断或信号处理程序),然后由该信号处理程序重新输入;这发生在一个线程中。

我们无法判断func()是否可重入,或仅仅是因为它使用了一个线程局部变量。

简而言之:如果函数以非原子方式访问全局数据(或调用这样做的函数),那么它是不可重入的。这根本不一定涉及线程化。