int sqlite3_threadsafe(void);
僅且唯當 SQLite 在編譯時因 SQLITE_THREADSAFE 編譯選項設為 0 而忽略互斥鎖程式碼的情況下,sqlite3_threadsafe() 函式才會返回零。
SQLite 可以選擇是否編譯互斥鎖。當 SQLITE_THREADSAFE C 預處理器巨集為 1 或 2 時,互斥鎖會啟用,SQLite 就是執行緒安全的。當 SQLITE_THREADSAFE 巨集為 0 時,互斥鎖會被忽略。沒有互斥鎖,從多個執行緒同時使用 SQLite 是不安全的。
啟用互斥鎖會造成可察覺的效能損失。因此,如果速度至關重要,停用互斥鎖是有意義的。但為了最大的安全性,應該啟用互斥鎖。預設行為是啟用互斥鎖。
應用程式可以使用此介面來確保其連結的 SQLite 版本是以所需的 SQLITE_THREADSAFE 巨集設定進行編譯的。
此介面僅回報 SQLITE_THREADSAFE 旗標的編譯時互斥鎖設定。如果 SQLite 使用 SQLITE_THREADSAFE=1 或 =2 編譯,則預設情況下會啟用互斥鎖,但可以使用 sqlite3_config() 函式搭配 SQLITE_CONFIG_SINGLETHREAD、SQLITE_CONFIG_MULTITHREAD 或 SQLITE_CONFIG_SERIALIZED 等參數來完全或部分停用互斥鎖。 sqlite3_threadsafe() 函式的返回值僅顯示執行緒安全的編譯時設定,而不顯示 sqlite3_config() 對該設定進行的任何執行時更改。換句話說,sqlite3_config() 的呼叫不會改變 sqlite3_threadsafe() 的返回值。
有關更多資訊,請參閱執行緒模式文件。