Je ne trouve nulle part sur le site MSDN où cela est discuté. Cependant, de nombreuses fonctions qui retournent des tampons statiques sont déjà thread safe dans MSVC (c'est-à-dire qu'elles renvoient des pointeurs vers des tampons locaux de thread). Il serait donc surprenant que errno ne soit pas sécurisé.
L'en-tête MSVC fichiers ont tous cette définition:
#ifndef _CRT_ERRNO_DEFINED
#define _CRT_ERRNO_DEFINED
_CRTIMP extern int * __cdecl _errno(void);
#define errno (*_errno())
errno_t __cdecl _set_errno(_In_ int _Value);
errno_t __cdecl _get_errno(_Out_ int * _Value);
#endif /* _CRT_ERRNO_DEFINED */
Et un petit programme de test showd que 2 fils de réglage errno au moins ne pas affecté eachother. Donc, je dirais qu'il est prudent de supposer que errno est thread-safe (mais probablement pas si vous liez au CRT thread unique)
Quelle version de Visual C++ utilisez-vous? –
@Steve: Actuellement principalement MSVC 2010. –