В каком режиме работы с потоками компилируется Sqlite для iOS? - PullRequest
6 голосов
/ 15 января 2012

На странице http://www.sqlite.org/threadsafe.html упоминается:

  • Однопоточность
  • Многопоточность
  • Сериализация

В каком режиме скомпилирован sqlite в iOS 5?

Ответы [ 3 ]

6 голосов
/ 27 января 2012

ОК, поэтому sqlite3_threadsafe () возвращает 2, поэтому он скомпилирован с SQLITE_CONFIG_MULTITHREAD на iOS. К сожалению, мне бы понравился Serialized.

sqlite3_config (SQLITE_CONFIG_SERIALIZED), к сожалению, дает мне SQLITE_MISUSE

3 голосов
/ 04 мая 2012

Согласно этому ответу - https://stackoverflow.com/a/7799021/40444

Похоже, вы можете сделать следующее:

sqlite3_shutdown();
if (sqlite3_config(SQLITE_CONFIG_SERIALIZED) == SQLITE_OK) {
    NSLog(@"sqlite configured to be threadsafe);
}
sqlite3_initialize();

Однако неясно, работает ли это официально.

0 голосов
/ 26 апреля 2018

Ответ является многопоточным. Мы можем проверить с помощью sqlite3_threadsafe (), который возвращает 2.

0 - Single-thread
2 - Multi-thread
1 - Serialized

Q: @ Бен Мартен "к сожалению, регистрация sqlite3_threadsafe () не показывает разница после применения настройки ... "

A: sqlite3_threadsafe () сообщает только о настройке мьютекса во время компиляции флага [SQLITE_THREADSAFE].

Определено возвращаемое значение интерфейса sqlite3_threadsafe () выбором режима потоков во время компиляции. Если однопоточный режим выбирается во время компиляции, затем sqlite3_threadsafe () возвращает false. Если либо многопоточный или сериализованный режимы, то sqlite3_threadsafe () возвращает true. Интерфейс sqlite3_threadsafe () предшествует многопоточному режиму и режиму запуска и времени выполнения выбор и поэтому не может различить многопоточность и в сериализованном режиме и при этом он не может сообщить время запуска или режим времени выполнения меняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...