多线程处理

在多线程操作系统上,驱动程序必须是线程安全的。 也就是说,应用程序必须能够在多个线程上使用同一句柄。 实现此目的的方式是特定于驱动程序的,并且驱动程序可能会序列化在两个不同线程上并发使用同一个句柄的任何尝试。

应用程序通常使用多个线程而不是异步处理。 应用程序会创建一个单独的线程,对它调用 ODBC 函数,然后在主线程上继续处理。 应用程序无需像使用 SQL_ATTR_ASYNC_ENABLE 语句属性时那样不断地轮询异步函数,只需让新创建的线程完成即可。

接受语句句柄并在一个线程上运行的函数可以通过在另一个线程中使用相同的语句句柄调用 SQLCancel 来取消。 尽管驱动程序不应以这种方式序列化 SQLCancel 的使用,但不能保证调用 SQLCancel 实际上会取消在其他线程上运行的函数。