sqlite.h


Prueba para verificar si la biblioteca es multihilo

int sqlite3_threadsafe(void);

La función sqlite3_threadsafe() devuelve cero si y sólo si SQLite fue compilado omitiendo el código de mutex debido a que la opción de compilación SQLITE_THREADSAFE puesta a 0.

SQLite puede ser compilado con o sin mutexes. Cuando la macro del preprocesador C SQLITE_THREADSAFE es 1 o 2, los mutexes están activados y SQLite es multihilo. Cuando la macro SQLITE_THREADSAFE es 0, los mutexes se omiten. Sin los mutexes, no es seguro usar SQLite de forma concurrente desde más de un hilo.

Habilitar los mutexes produce una penalización de comportamiento mensurable. De modo que si la velocidad es de suma importancia, tiene sentido deshabilitar los mutexes. Pero para seguridad máxima, los mutexes deben estar activos. El comportamiento por defecto es que los mutexes estén activos.

Esta función puede ser utilizada por una aplicación para asegurarse de que la versión de SQLite que se está enlazando fue compilada con la opción deseada para la macro SQLITE_THREADSAFE.

Esta función sólo informa sobre la configuración de mutex de compilación de la bandera SQLITE_THREADSAFE. Si SQLite se compila con SQLITE_THREADSAFE=1 o =2 los mutexes están activos por defecto pero pueden ser completa o parcialmente deshabilitados usando una llamada a sqlite3_config() con con SQLITE_CONFIG_SINGLETHREAD, SQLITE_CONFIG_MULTITHREAD o SQLITE_CONFIG_MUTEX. El valor de retorno de sqlite3_threadsafe() muestra sólo la configuración de compilación de la seguridad de procesos, no ningún cambio en tiempo de ejecución realizado por sqlite3_config(). En otras palabras, el valor de retorno de sqlite3_threadsafe() no cambia por llamadas a sqlite3_config().