Udostępnij przez


Obsługa wolnych wątków w dostawcy

Wszystkie klasy dostawców OLE DB są bezpieczne wątkowo, a wpisy rejestru są odpowiednio ustawione. Dobrym pomysłem jest obsługa bezpłatnych wątków, aby zapewnić wysoki poziom wydajności w sytuacjach wielu użytkowników. Aby zapewnić bezpieczeństwo wątków dostawcy, należy sprawdzić, czy kod jest poprawnie zablokowany. Za każdym razem, gdy zapisujesz lub przechowujesz dane, musisz zablokować dostęp z sekcjami krytycznymi.

Każdy obiekt szablonu dostawcy OLE DB ma własną sekcję krytyczną. Aby ułatwić blokowanie, każda utworzona nowa klasa powinna być klasą szablonu, która przyjmuje nazwę klasy nadrzędnej jako argument.

W poniższym przykładzie pokazano, jak zablokować kod:

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
}

Aby uzyskać więcej informacji na temat ochrony krytycznych sekcji za pomocą Lock elementów i Unlock, zobacz Multithreading: How To Use the Synchronization Classes (Jak używać klas synchronizacji).

Sprawdź, czy wszystkie metody zastępowania (takie jak Execute) są bezpieczne wątkowo.

Zobacz też

Praca z szablonami dostawców OLE DB