A segmentação livre no seu provedor de suporte
Todas as classes de provedor do OLE DB são thread-safe e entradas do registro estão definidas adequadamente. É uma boa idéia para dar suporte a segmentação livre para ajudar a fornecer um alto nível de desempenho em situações de multiusuário. Para ajudar a manter o seu provedor de thread-safe, você deve verificar que seu código é bloqueado adequadamente. Sempre que você gravar ou armazena dados, você deve bloquear o acesso com seções críticas.
Cada objeto de modelo de provedor do OLE DB tem sua própria seção crítica. Para tornar mais fácil de bloqueio, cada nova classe que você criar deve ser uma classe de modelo, levando a classe pai nome como um argumento.
O exemplo a seguir 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 as seções críticas com Lock e Unlock, consulte Multithreading: Como usar as Classes de sincronização.
Você também deve verificar todos os métodos que você substituir (como Execute) são thread-safe.