多线程处理

在多线程作系统上,驱动程序必须是线程安全的。 应用程序应该能够在多个线程上使用同一个句柄。 实现此目的的方式因驱动程序而异,驱动程序可能会将尝试在两个不同线程上同时使用同一句柄的操作进行序列化。

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

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