2008-12-10 31 views
5

Tôi yêu cầu các hoạt động truy cập cơ sở dữ liệu từ một số luồng, thông qua một đối tượng đơn lẻ, chứa một kết nối cơ sở dữ liệu. Tôi đọc từ trang web của SQLite3, nói rằng 'một cấu trúc sqlite3 chỉ có thể được sử dụng trong cùng một luồng được gọi là sqlite3_open() để tạo ra nó. Bạn không thể mở một cơ sở dữ liệu trong một chủ đề sau đó vượt qua xử lý ra một thread khác để nó sử dụng '. Tôi đang tự hỏi trong tình huống của tôi, có bất kỳ mối đe dọa nào của chủ đề an toàn không?Chuỗi chủ đề có an toàn trong tình huống này không?

Trả lời

11

Nếu thư viện SQLite được biên dịch bằng -DSQLITE_THREADSAFE, bạn đồng ý với các phiên bản SQLite 3 gần đây hơn.

Tác giả của SQLite says:

Bắt đầu với phiên bản 3.5.0, SQLite thực thi tự làm việc này bằng
mutexes nội bộ riêng của mình, vì vậy việc áp dụng là miễn phí để (cố gắng) sử dụng cùng một cơ sở dữ liệu
kết nối từ nhiều luồng cùng một lúc.

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