Aracılığıyla paylaş


_configthreadlocale

İş parçacığı başına yerel ayar seçeneklerini yapılandırır.

int _configthreadlocale(
   int type
);

Parametreler

  • type
    Ayarlanacak seçenek.Aşağıdaki tabloda listelenen seçeneklerden biri.

Dönüş Değeri

Önceki iş parçacığı başına yerel ayar durumu (_DISABLE_PER_THREAD_LOCALE veya _ENABLE_PER_THREAD_LOCALE) veya hata durumunda -1.

Notlar

_configurethreadlocale işlevi, iş parçacığına özgü yerel ayarların kullanımını denetlemek için kullanılır.İş parçacığı başına yerel ayar durumunu belirlemek veya belirtmek için aşağıdaki seçeneklerden birini kullanın:

  • _ENABLE_PER_THREAD_LOCALE
    Geçerli iş parçacığının iş parçacığına özel yerel ayar kullanmasını sağlayın.Bu iş parçacığındaki sonraki setlocale çağrıları, yalnızca iş parçacığının kendi yerel ayarını etkiler.

  • _DISABLE_PER_THREAD_LOCALE
    Geçerli iş parçacığının genel yerel ayar kullanmasını sağlayın.Bu iş parçacığındaki sonraki setlocale çağrıları, küresel yerel ayarı kullanan diğer iş parçacıklarını etkiler.

  • 0
    Bu belirli iş parçacığının geçerli ayarını alır.

Bu işlevler, setlocale, _tsetlocale, _wsetlocale, _beginthread, ve _beginthreadex davranışını etkiler.İş parçacığı oluşturmak için başka bir yöntem kullanılıyorsa, yerel ayarların bu iş parçacıkları üzerinde herhangi bir etkisi yoktur.

İş parçacığı başına yerel ayar devre dışı bırakıldığında, herhangi bir müteakip setlocale veya _wsetlocale çağrısı, tüm iş parçacıklarının yerel ayarını değiştirir.İş parçacığı başına yerel ayar etkin olduğunda, setlocale veya _wsetlocale yalnızca geçerli iş parçacığının yerel ayarını etkiler.

İş parçacığı başına yerel ayarı etkinleştirmek için _configurethreadlocale kullanırsanız, bundan sonra bu iş parçacığındaki tercih edilen yerel ayarı hemen ayarlamak için setlocale veya _wsetlocale seçeneğini çağırmanızı öneririz.

type tabloda listelenen değerlerden biri değilse, bu işlev Parametre Doğrulama konusunda açıklandığı gibi geçersiz parametre işleyici çağırır.Yürütmenin devam etmesine izin verilirse, bu işlev errno öğesini EINVAL olarak ayarlar ve -1 döndürür.

Gereksinimler

Yordam

Gerekli başlık

_configthreadlocale

<locale.h>

Örnek

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

.NET Framework Eşdeğeri

Uygulanamaz. Ancak, bkz. CurrentCulture Özelliğini Kullanma.

Ayrıca bkz.

Başvuru

setlocale, _wsetlocale

_beginthread, _beginthreadex

Yerel Ayar

Çoklu İş Parçacığı Kullanımı ve Yerel Ayarlar