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.