Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.