Udostępnij za pośrednictwem


Klasy i wątki ODBC

Począwszy od MFC 4.2, istnieje obsługa wielowątków dla klas MFC ODBC. Należy jednak pamiętać, że MFC nie zapewnia obsługi wielowątków dla klas DAO.

Obsługa wielowątkowości klas ODBC ma pewne ograniczenia. Ponieważ te klasy opakowują interfejs API ODBC, są one ograniczone do obsługi wielowątków składników, na których są tworzone. Na przykład wiele sterowników ODBC nie jest bezpiecznych wątkowo; dlatego klasy MFC ODBC nie są bezpieczne wątkowo, jeśli używasz ich z jednym z tych sterowników. Należy sprawdzić, czy dany sterownik jest bezpieczny wątkowo.

Podczas tworzenia aplikacji wielowątku należy bardzo ostrożnie używać wielu wątków do manipulowania tym samym obiektem. Na przykład użycie tego samego CRecordset obiektu w dwóch wątkach może powodować problemy podczas pobierania danych; operacja pobierania w jednym wątku może zastąpić dane pobrane w drugim wątku. Bardziej typowym zastosowaniem klas MFC ODBC w osobnych wątkach jest udostępnianie otwartego CDatabase obiektu między wątkami w celu używania tego samego połączenia ODBC z oddzielnym CRecordset obiektem w każdym wątku. Należy pamiętać, że nie należy przekazywać nieotwartego CDatabase obiektu do CRecordset obiektu w innym wątku.

Uwaga

Jeśli musisz mieć wiele wątków manipulowania tym samym obiektem, należy zaimplementować odpowiednie mechanizmy synchronizacji, takie jak sekcje krytyczne. Należy pamiętać, że niektóre operacje, takie jak Open, nie są chronione. Należy mieć pewność, że te operacje nie będą wywoływane współbieżnie z oddzielnych wątków.

Aby uzyskać więcej informacji na temat tworzenia aplikacji wielowątków, zobacz Tematy wielowątkowe.

Zobacz też

Open Database Connectivity (ODBC)
Programowanie dostępu do danych (MFC/ATL)