Prise en charge du Free Threading dans votre fournisseur
Toutes les classes de fournisseur OLE DB sont thread-safe et les entrées de Registre sont définies en conséquence. Il est judicieux de prendre en charge le threading gratuit pour vous aider à fournir un niveau élevé de performances dans les situations multiutilisateurs. Pour aider à maintenir le thread sécurisé de votre fournisseur, vous devez vérifier que votre code est bloqué correctement. Chaque fois que vous écrivez ou stockez des données, vous devez bloquer l’accès avec des sections critiques.
Chaque objet de modèle de fournisseur OLE DB a sa propre section critique. Pour faciliter le blocage, chaque nouvelle classe que vous créez doit être une classe de modèle qui prend le nom de classe parent comme argument.
L’exemple suivant montre comment bloquer votre code :
template <class T>
class CMyObject<T> : public...
HRESULT MyObject::MyMethod(void)
{
T* pT = (T*)this; // this gets the parent class
// You don't need to do anything if you are only reading information
// If you want to write information, do the following:
pT->Lock(); // engages critical section in the object
...; // write whatever information you wish
pT->Unlock(); // disengages the critical section
}
Pour plus d’informations sur la protection des sections critiques avec Lock
et Unlock
, consultez Multithreading : Utilisation des classes de synchronisation.
Vérifiez que toutes les méthodes que vous remplacez (par exemple Execute
) sont thread-safe.