ODBC 类和线程

从 MFC 4.2 开始,MFC ODBC 类支持多线程。 但是,请注意,MFC 不提供对 DAO 类的多线程支持。

ODBC 类的多线程支持有一些限制。 由于这些类包装 ODBC API,因此它们仅限于生成其组件的多线程支持。 例如,许多 ODBC 驱动程序不是线程安全的;因此,如果将 MFC ODBC 类与其中一个驱动程序一起使用,则它们不是线程安全的。 应验证特定驱动程序是否是线程安全的。

创建多线程应用程序时,应非常小心地使用多个线程来操作同一对象。 例如,在两个线程中均使用 CRecordset 对象可能会导致检索数据时出现问题;一个线程中的提取操作可能会覆盖另一个线程中提取的数据。 单独线程中 MFC ODBC 类的更常见用法是跨线程共享一个开放的 CDatabase 对象,以使用同一 ODBC 连接,每个线程中都有一个单独的 CRecordset 对象。 请注意,不应将未开放的 CDatabase 对象传递到另一个线程中的 CRecordset 对象。

注意

如果必须有多个线程操作同一对象,则应实现相应的同步机制,例如关键部分。 请注意,某些操作(例如 Open)不受保护。 应确保不会从单独的线程并发调用这些操作。

有关创建多线程应用程序的详细信息,请参阅多线程主题

另请参阅

开放式数据库连接 (ODBC)
数据访问编程 (MFC/ATL)