Partilhar via


Dando suporte ao thread livre no provedor

Todas as classes de provedor OLE DB são thread-safe e as entradas do Registro são definidas de acordo. É uma boa ideia dar suporte ao threading livre para ajudar a fornecer um alto nível de desempenho em situações multiusuários. Para ajudar a manter o provedor thread-safe, você deve verificar se seu código está bloqueado corretamente. Sempre que você grava ou armazena dados, deve bloquear o acesso com seções críticas.

Cada objeto de modelo de provedor OLE DB tem sua própria seção crítica. Para facilitar o bloqueio, cada nova classe criada deve ser uma classe de modelo que usa o nome da classe pai como argumento.

O seguinte exemplo mostra como bloquear seu código:

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
}

Para obter mais informações sobre como proteger seções críticas com Lock e Unlock, consulte Multithread: como usar as classes de sincronização.

Verifique se todos os métodos que você substitui (como Execute) são thread-safe.

Confira também

Trabalhando com modelos de provedor do OLE DB