Sdílet prostřednictvím


Podpora volného threadingu ve Vašem zprostředkovateli

Všechny třídy zprostředkovatele technologie OLE DB jsou vláknově bezpečné a položky registrů jsou nastaveny odpovídajícím způsobem. Je vhodné podporovat volný threading na pomoc poskytnutí vysoké úrovně výkonu ve víceuživatelských situacích. Chcete-li udržet vašeho zprostředkovatele vláknově bezpečného, musíte ověřit zda je Váš kód správně blokován. Kdykoliv zapisujete nebo ukládáte data, musíte blokovat přístup s kritickými oddíly.

Každá šablona objektu zprostředkovatele technologie OLE DB má své kritické oddíly. Chcete-li snažší blokování, měla by být každá nově Vámi vytvořená třída šablonovou třídou přijímanou nadřazený název třídy jako argument.

Následující příklad ukazuje, jak blokovat Váš kód:

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
}

Další informace o možnostech ochrany kritické oblasti s Lock a Unlock, naleznete v tématu multithreading: Jak použít třídy synchronizace.

Musíte také ověřit, že jakékoli Vámi přepsané metody (jako například Execute), jsou vláknově bezpečné.

Viz také

Koncepty

Práce s šablonami zprostředkovatele OLE DB