_configthreadlocale

 

Pour obtenir la dernière documentation sur Visual Studio 2017 RC, consultez Documentation Visual Studio 2017 RC.

Configure les options de paramètres régionaux par thread.

int _configthreadlocale(  
   int type  
);  

Paramètres

type
Option à définir. Une des options répertoriées dans le tableau suivant.

L’état de paramètres régionaux par thread précédent (_DISABLE_PER_THREAD_LOCALE ou _ENABLE_PER_THREAD_LOCALE), ou -1 en cas d’échec.

Le _configurethreadlocale fonction est utilisée pour contrôler l’utilisation des paramètres régionaux spécifiques aux threads. Pour spécifier ou déterminer l’état de paramètres régionaux par thread, utilisez une des options suivantes :

_ENABLE_PER_THREAD_LOCALE
Vérifiez le paramètres régionaux d’utiliser un thread spécifique thread actuel. Les appels suivants à setlocale dans ce thread affecte uniquement les paramètres régionaux du thread.

_DISABLE_PER_THREAD_LOCALE
Rendre le thread actuel à utiliser les paramètres régionaux globaux. Les appels suivants à setlocale affectent les autres threads à l’aide des paramètres régionaux globaux dans ce thread.

0
Récupère la valeur actuelle de ce thread particulier.

Ces fonctions affectent le comportement de setlocale, _tsetlocale, _wsetlocale, _beginthread, et _beginthreadex. Si une autre méthode est utilisée pour créer des threads, les paramètres régionaux n’ont aucun effet sur ces threads.

Lorsque les paramètres régionaux par thread sont désactivée, toutes les appels à setlocale ou _wsetlocale modifie les paramètres régionaux de tous les threads. Lorsque les paramètres régionaux par thread sont activé, setlocale ou _wsetlocale affecte uniquement les paramètres régionaux du thread actuel.

Si vous utilisez _configurethreadlocale pour activer les paramètres régionaux par thread, nous vous recommandons d’appeler setlocale ou _wsetlocale pour définir les paramètres régionaux par défaut dans ce thread immédiatement après.

Si type n’est pas une des valeurs répertoriées dans le tableau, cette fonction appelle le Gestionnaire de paramètre non valide, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, cette fonction affecte à errno la valeur EINVAL et retourne -1.

RoutineEn-tête requis
_configthreadlocale<locale.h>
  
      // crt_configthreadlocale.cpp  
//   
// This program demonstrates the use of _configthreadlocale when  
// using is two independent threads.  
//  
  
#include <locale.h>  
#include <process.h>  
#include <windows.h>  
#include <stdio.h>  
#include <time.h>  
  
#define BUFF_SIZE 100  
  
// Retrieve the date and time in the current  
// locale's format.  
int get_time(unsigned char* str)  
{  
    __time64_t  ltime;  
    struct tm   thetime;  
  
    // Retieve the time  
    _time64(&ltime);  
    _gmtime64_s(&thetime, &ltime);  
  
    // Format the current time structure into a string  
    // using %#x is the long date representation,  
    // appropriate to the current locale  
    if (!strftime((char *)str, BUFF_SIZE, "%#x",   
                  (const struct tm*)&thetime))  
    {  
        printf("strftime failed!\n");  
        return -1;  
    }  
    return 0;  
}  
  
// This thread sets its locale to German  
// and prints the time.  
unsigned __stdcall SecondThreadFunc( void* pArguments )  
{  
    unsigned char str[BUFF_SIZE];  
  
    // Set the thread code page  
    _setmbcp(_MB_CP_ANSI)  
  
    // Set the thread locale  
    printf("The thread locale is now set to %s.\n",  
           setlocale(LC_ALL, "German"));  
  
    // Retrieve the time string from the helper function  
    if (get_time(str) == 0)  
    {  
        printf("The time in German locale is: '%s'\n", str);  
    }  
  
    _endthreadex( 0 );  
    return 0;  
}   
  
// The main thread spawns a second thread (above) and then  
// sets the locale to English and prints the time.  
int main()  
{   
    HANDLE          hThread;  
    unsigned        threadID;  
    unsigned char   str[BUFF_SIZE];  
  
    // Configure per-thread locale to cause all subsequently created   
    // threads to have their own locale.  
    _configthreadlocale(_ENABLE_PER_THREAD_LOCALE);  
  
    // Retrieve the time string from the helper function  
    printf("The thread locale is now set to %s.\n",  
           setlocale(LC_ALL, "English"));  
  
    // Create the second thread.  
    hThread = (HANDLE)_beginthreadex( NULL, 0, &SecondThreadFunc,  
                                      NULL, 0, &threadID );  
  
    if (get_time(str) == 0)  
    {  
        // Retrieve the time string from the helper function  
        printf("The time in English locale is: '%s'\n\n", str);  
    }  
  
    // Wait for the created thread to finish.  
    WaitForSingleObject( hThread, INFINITE );  
  
    // Destroy the thread object.  
    CloseHandle( hThread );  
}  

The thread locale is now set to English_United States.1252.  
The time in English locale is: 'Wednesday, May 12, 2004'  
  
The thread locale is now set to German_Germany.1252.  
The time in German locale is: 'Mittwoch, 12. Mai 2004'  

Non applicable. Toutefois, consultez à l’aide de la propriété CurrentCulture.

SetLocale, _wsetlocale
_beginthread, _beginthreadex
Paramètres régionaux
Multithreading et paramètres régionaux

Afficher: