C ++ 0x добавляет спецификатор хранилища «thread_local», так что в области имен (или глобальном) ваш пример будет
int x; // normal process-wide global variable
thread_local int y; // per-thread global variable
Вы также можете использовать thread_local со статическим при объявлении членов класса или локальных переменных в функции:
class Foo {
static thread_local int x;
};
void f() {
static thread_local int x;
}
К сожалению, это, похоже, не одна из функций C ++ 0x, поддерживаемых Visual Studio 2010 или запланированных выпусков GCC.