ODBC – třídy a vlákna
Počínaje mfc 4.2 existuje podpora multithreadingu pro třídy MFC ODBC. Upozorňujeme však, že MFC neposkytuje podporu vícevláknového formátování pro třídy DAO.
Podpora multithreadingu pro třídy ODBC má určitá omezení. Vzhledem k tomu, že tyto třídy zabalí rozhraní API ODBC, jsou omezeny na podporu multithreadingu součástí, na kterých jsou sestaveny. Mnoho ovladačů ODBC například není bezpečné pro přístup z více vláken; proto třídy MFC ODBC nejsou bezpečné pro vlákna, pokud je používáte s jedním z těchto ovladačů. Měli byste ověřit, jestli je váš konkrétní ovladač bezpečný pro přístup z více vláken.
Při vytváření vícevláknové aplikace byste měli být velmi opatrní při použití více vláken k manipulaci se stejným objektem. Například použití stejného CRecordset
objektu ve dvou vláknech může způsobit problémy při načítání dat. Operace načtení v jednom vlákně může přepsat data načtená v druhém vlákně. Častějším použitím tříd MFC ODBC v samostatných vláknech je sdílení otevřeného CDatabase
objektu napříč vlákny, aby bylo možné použít stejné připojení ODBC s samostatným CRecordset
objektem v každém vlákně. Všimněte si, že byste neměli předat neotevřený CDatabase
objekt objektu CRecordset
v jiném vlákně.
Poznámka:
Pokud musíte mít více vláken manipulovat se stejným objektem, měli byste implementovat příslušné synchronizační mechanismy, jako jsou kritické části. Mějte na paměti, že některé operace, například Open
, nejsou chráněny. Měli byste mít jistotu, že tyto operace nebudou volány souběžně z samostatných vláken.
Další informace o vytváření vícevláknových aplikací naleznete v tématu Vícevláknová témata.
Viz také
Open Database Connectivity (ODBC)
Programování přístupu k datům (MFC/ATL)