Freigeben über


Unterstützen des Freethreadings im Anbieter

Alle OLE DB-Anbieterklassen sind threadsicher, und Registrierungseinträge werden entsprechend festgelegt. Es ist ratsam, das kostenlose Threading zu unterstützen, um ein hohes Leistungsniveau in Mehrbenutzersituationen bereitzustellen. Damit Ihr Anbieterthread sicher bleibt, müssen Sie überprüfen, ob Ihr Code ordnungsgemäß blockiert ist. Immer wenn Sie Daten schreiben oder speichern, müssen Sie den Zugriff mit kritischen Abschnitten blockieren.

Jedes OLE DB-Anbietervorlagenobjekt verfügt über einen eigenen kritischen Abschnitt. Um die Blockierung zu vereinfachen, sollte jede neue Klasse, die Sie erstellen, eine Vorlagenklasse sein, die den übergeordneten Klassennamen als Argument verwendet.

Das folgende Beispiel zeigt, wie Der Code blockiert wird:

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
}

Weitere Informationen zum Schützen kritischer Abschnitte mit Lock und Unlockfinden Sie unter Multithreading: Verwenden der Synchronisierungsklassen.

Stellen Sie sicher, dass alle Methoden, die Sie außer Kraft setzen (z Execute. B. ) threadsicher sind.

Siehe auch

Arbeiten mit OLE DB-Anbietervorlagen