RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Режимы проверки Mutex

#ifndef NDEBUG
int sqlite3_mutex_held(sqlite3_mutex*);
int sqlite3_mutex_notheld(sqlite3_mutex*);
#endif

sqlite3_mutex_held() и sqlite3_mutex_notheld() предназначается для использования внутри assert(). Ядро SQLite никогда не использует эту хранимую процедуру, кроме внутренней части assert(). Ядро SQLite обеспечивает внедрения для этого установленного порядка только когда оно собрано с флагом SQLITE_DEBUG. Внешние mutex внедрения должны обеспечивать эту хранимую процедуру только если SQLITE_DEBUG определяется и NDEBUG не определяется.

Это должно возвратить true, если mutex в их аргументе проведен или не проведен, соответственно, вызывающим потоком.

Внедрение не требуется, чтобы обеспечивать версии этого установленного порядка, это на самом деле работает. Если внедрение не обеспечивает рабочие версии этого установленного порядка, оно должно, по крайней мере, обеспечить заглушки, которые всегда возвращают true, чтобы никто не получал поддельные неудачи.

Если аргумент sqlite3_mutex_held() это NULL, вернется 1. Это кажется парадоксальным, так как mutex не может быть проведен, если он не существует. Но причина, по которой mutex не существует, состоит в том, что сборка не использует mutexes. И мы не хотим, чтобы assert(), содержащий запрос sqlite3_mutex_held(), потерпел неудачу, таким образом, возвращение отличное от нуля, правильно. sqlite3_mutex_notheld() должен также возвратить 1, когда ему дали NULL.