Condividi tramite


Multithreading

Nei sistemi operativi multithread i driver devono essere thread-safe. Ciò significa che è necessario che le applicazioni usino lo stesso handle su più thread. Il modo in cui ciò avviene è specifico del driver ed è probabile che i driver serializzino qualsiasi tentativo di utilizzare contemporaneamente lo stesso handle su due thread diversi.

Le applicazioni usano in genere thread multipli anziché l'elaborazione asincrona. L'applicazione crea un thread separato, chiama una funzione ODBC e quindi continua l'elaborazione nel thread principale. Invece di dover eseguire continuamente il polling della funzione asincrona, come nel caso in cui viene usato l'attributo dell’istruzione SQL_ATTR_ASYNC_ENABLE, l'applicazione può semplicemente consentire il completamento del thread appena creato.

Le funzioni che accettano un handle di istruzione e vengono eseguite in un thread possono essere annullate chiamando SQLCancel con lo stesso handle di istruzione da un altro thread. Sebbene i driver non dovrebbero serializzare l'uso di SQLCancel in questo modo, non esiste alcuna garanzia che la chiamata a SQLCancel annulli effettivamente la funzione in esecuzione sull'altro thread.