2011-10-21 31 views
5

Trong các tài liệu ở đây: http://www.sqlite.org/threadsafe.htmlchế độ In nhiều Sqlite của

Đối với chế độ tuần tự nó nói: "Trong chế độ tuần tự, SQLite có thể được sử dụng một cách an toàn bởi nhiều luồng không có giới hạn."

Tôi muốn đảm bảo rằng tôi hiểu được sự bảo đảm được trình bày ở đó. Nếu một kết nối cơ sở dữ liệu duy nhất được mở bằng cách sử dụng cờ "SQLITE_OPEN_FULLMUTEX" và hai luồng đồng thời cố gắng gọi sqlite3_exec cùng một lúc, thì Sqlite có tự động tuần tự hóa các cuộc gọi không?

Trả lời

4

Câu trả lời là có. sqlite3_exec() sẽ lấy một mutex khi chức năng được nhập vào và giải phóng mutext khi chức năng còn lại. Chỉ có một chủ đề có thể sở hữu mutex tại bất kỳ thời điểm nào, do đó, chỉ có một luồng có thể thực thi sqlite3_exec() tại bất kỳ thời điểm đã định nào. Nếu hai chủ đề cố gắng thực hiện sqlite3_exec() cùng một lúc, người ta sẽ đợi người khác.

Các vấn đề liên quan