什么使errno线程安全?

时间:2018-07-04 17:48:42

标签: c multithreading errno

我是C编程的初学者,遇到过errno声明。我阅读了POSIX errno的手册页,它必须是线程本地的。这是手册页中的报价:

  ISO C标准将

errno定义为int类型的可修改左值,并且不能明确声明; errno可能是宏。 errno是线程本地的;将其设置在一个线程中不会          影响它在其他任何线程中的值。

现在看看errno.h,我发现了:

/* Declare the `errno' variable, unless it's defined as a macro by
   bits/errno.h.  This is the case in GNU, where it is a per-thread
   variable.  This redeclaration using the macro still works, but it
   will be a function declaration without a prototype and may trigger
   a -Wstrict-prototypes warning.  */
#ifndef errno
extern int errno;
#endif

据我所知,它看起来不像线程局部变量。是什么使errno成为线程本地的?

0 个答案:

没有答案