Share via


_configthreadlocale

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

int _configthreadlocale(
   int type
);

Paramètres

  • type
    Option à définir.L'une des options figurant dans le tableau suivant.

Valeur de retour

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

Notes

La fonction d' _configurethreadlocale est utilisée pour contrôler l'utilisation des paramètres régionaux de thread-détail.Utilisez l'une de ces options pour spécifier ou déterminer l'état par thread de paramètres régionaux :

  • _ENABLE_PER_THREAD_LOCALE
    Rendez le thread actuel utiliser les paramètres régionaux de thread- détail.Les appels suivants à setlocale dans ce thread n'affectent que les propres paramètres régionaux du thread.

  • _DISABLE_PER_THREAD_LOCALE
    Rendez le thread actuel utiliser les paramètres régionaux globaux.Les appels suivants à setlocale dans ce thread affectent d'autres threads à l'aide de les paramètres régionaux globaux.

  • 0
    Extrait la configuration actuelle de ce thread particulier.

Ces fonctions affectent le comportement d' setlocale, d' _tsetlocale, d' _wsetlocale, d' _beginthread, et d' _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és, tout appel suivant à setlocale ou à _wsetlocale modifie les paramètres régionaux de tous les threads.Lorsque les paramètres régionaux par thread sont activés, 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 l'une des valeurs répertoriées dans le tableau, cette fonction appelle le gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution pour continuer, les jeux errno de cette fonction à EINVAL et retourne -1.

Configuration requise

Routine

En-tête requis

_configthreadlocale

<locale.h>

Exemple

// 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 );
}
  
  
  
  

Équivalent .NET Framework

Non applicable. Toutefois, consultez l' À l'aide de la propriété CurrentCulture.

Voir aussi

Référence

setlocale, _wsetlocale

_beginthread, _beginthreadex

Paramètres régionaux

Multithreading et paramètres régionaux