kai*_*kai 2 c c++ linux errno thread-safety
我看到了一段这样的代码,并想知道这是否是线程安全的:
int savedErrno = errno;
//call some function that may modifies errno
if (errno == xxx)
foo();
errno = savedErrno;
Run Code Online (Sandbox Code Playgroud)
我不认为这是线程安全的,我是否正确?
但我看到人们写这样的代码,所以我不确定......
任何人都可以帮我澄清一下,谢谢......
每个线程都有自己的(线程特定的)errno副本,因此它看起来应该是安全的.
来自man(3)errno:
errno由ISO C标准定义为int类型的可修改左值,不得显式声明; errno可能是一个宏.errno是线程本地的; 在一个线程中设置它不会影响其在任何其他线程中的值.