2009-06-27 11 views

Répondre

0

Le compilateur Visual C++ permet à ce dernier par l'extension __declspec(thread) non standard - cependant, il est limité severly, car il est pas pris en charge dans les DLL chargées dynamiquement. La première est principalement prise en charge par une déclaration extern - sauf si des bibliothèques liées dynamiquement entrent en jeu (ce qui est probablement le scénario que vous recherchez).

Je ne connais pas d'environnement qui rende cela aussi simple que vous l'avez décrit.

0

C++ 0x ajoute le spécificateur de stockage "thread_local", donc dans l'espace de noms (ou global) portée votre exemple serait

int x;    // normal process-wide global variable 
thread_local int y; // per-thread global variable 

Vous pouvez également utiliser thread_local avec statique lors de la déclaration des membres de la classe ou des variables locales dans une fonction:

class Foo { 
    static thread_local int x; 
}; 

void f() { 
    static thread_local int x; 
} 

Malheureusement, cela ne semble pas être l'un des C++ 0x fonctionnalités prises en charge par Visual Studio 2010 ou les versions GCC prévues.

Questions connexes