sqlite3_initialize
Initialize SQLite.
This routine must be called to initialize the memory allocation, VFS, and mutex subsystems prior to doing any serious work with SQLite. But as long as you do not compile with SQLITE_OMIT_AUTOINIT this routine will be called automatically by key routines such as sqlite3_open().
This routine is a no-op except on its very first call for the process, or for the first call after a call to sqlite3_shutdown.
The first thread to call this routine runs the initialization to completion. If subsequent threads call this routine before the first thread has finished the initialization process, then the subsequent threads must block until the first thread finishes with the initialization.
The first thread might call this routine recursively. Recursive calls to this routine should not block, of course. Otherwise the initialization process would never complete.
Let X be the first thread to enter this routine. Let Y be some other thread. Then while the initial invocation of this routine by X is incomplete, it is required that:
Calls to this routine from Y must block until the outer-most call by X completes.
Recursive calls to this routine from thread X return immediately without blocking.
Initialize SQLite.
This routine must be called to initialize the memory allocation, VFS, and mutex subsystems prior to doing any serious work with SQLite. But as long as you do not compile with SQLITE_OMIT_AUTOINIT this routine will be called automatically by key routines such as sqlite3_open().
This routine is a no-op except on its very first call for the process, or for the first call after a call to sqlite3_shutdown.
The first thread to call this routine runs the initialization to completion. If subsequent threads call this routine before the first thread has finished the initialization process, then the subsequent threads must block until the first thread finishes with the initialization.
The first thread might call this routine recursively. Recursive calls to this routine should not block, of course. Otherwise the initialization process would never complete.
Let X be the first thread to enter this routine. Let Y be some other thread. Then while the initial invocation of this routine by X is incomplete, it is required that:
Calls to this routine from Y must block until the outer-most call by X completes.
Recursive calls to this routine from thread X return immediately without blocking.
Initialize SQLite.
This routine must be called to initialize the memory allocation, VFS, and mutex subsystems prior to doing any serious work with SQLite. But as long as you do not compile with SQLITE_OMIT_AUTOINIT this routine will be called automatically by key routines such as sqlite3_open().
This routine is a no-op except on its very first call for the process, or for the first call after a call to sqlite3_shutdown.
The first thread to call this routine runs the initialization to completion. If subsequent threads call this routine before the first thread has finished the initialization process, then the subsequent threads must block until the first thread finishes with the initialization.
The first thread might call this routine recursively. Recursive calls to this routine should not block, of course. Otherwise the initialization process would never complete.
Let X be the first thread to enter this routine. Let Y be some other thread. Then while the initial invocation of this routine by X is incomplete, it is required that:
Calls to this routine from Y must block until the outer-most call by X completes.
Recursive calls to this routine from thread X return immediately without blocking.
Initialize SQLite.
This routine must be called to initialize the memory allocation, VFS, and mutex subsystems prior to doing any serious work with SQLite. But as long as you do not compile with SQLITE_OMIT_AUTOINIT this routine will be called automatically by key routines such as sqlite3_open().
This routine is a no-op except on its very first call for the process, or for the first call after a call to sqlite3_shutdown.
The first thread to call this routine runs the initialization to completion. If subsequent threads call this routine before the first thread has finished the initialization process, then the subsequent threads must block until the first thread finishes with the initialization.
The first thread might call this routine recursively. Recursive calls to this routine should not block, of course. Otherwise the initialization process would never complete.
Let X be the first thread to enter this routine. Let Y be some other thread. Then while the initial invocation of this routine by X is incomplete, it is required that:
Calls to this routine from Y must block until the outer-most call by X completes.
Recursive calls to this routine from thread X return immediately without blocking.
Initialize SQLite.
This routine must be called to initialize the memory allocation, VFS, and mutex subsystems prior to doing any serious work with SQLite. But as long as you do not compile with SQLITE_OMIT_AUTOINIT this routine will be called automatically by key routines such as sqlite3_open().
This routine is a no-op except on its very first call for the process, or for the first call after a call to sqlite3_shutdown.
The first thread to call this routine runs the initialization to completion. If subsequent threads call this routine before the first thread has finished the initialization process, then the subsequent threads must block until the first thread finishes with the initialization.
The first thread might call this routine recursively. Recursive calls to this routine should not block, of course. Otherwise the initialization process would never complete.
Let X be the first thread to enter this routine. Let Y be some other thread. Then while the initial invocation of this routine by X is incomplete, it is required that:
Calls to this routine from Y must block until the outer-most call by X completes.
Recursive calls to this routine from thread X return immediately without blocking.