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é.