gpt4 book ai didi

c++ - 多线程模式下的sqlite3 : what exactly is unsafe to perform?

转载 作者:行者123 更新时间:2023-11-28 05:49:37 34 4
gpt4 key购买 nike

来自SQLite documentation article on multithreading我在多线程模式下得到了“SQLite 可以被多个线程安全地使用,前提是两个或多个线程中没有同时使用单个数据库连接”。

虽然它没有解释:到底什么在这种模式下在两个或多个线程中同时做是不安全的?除了明显的 CREATE、INSERT、UPDATE、DROP 等修改数据库的查询外,

  1. 同时执行 SELECT 是否也不安全?

那么 using 语句 (sqlite3_stmt) 呢?如果它们连接到同一个数据库,同时使用它们也是不安全的吗?特别是:

  1. 准备语句 (sqlite3_prepare_v2)
  2. 绑定(bind)值(sqlite3_bind*)
  3. 清除绑定(bind) (sqlite3_clear_bindings)
  4. 重置语句(sqlite3_reset)
  5. 在不同线程中打开/关闭与同一数据库的新连接(sqlite3_open_v2、sqlite3_close_v2)

最佳答案

根据我的理解,在多线程模式下,任何同时从两个或多个线程对 sqlite3 对象的操作都是危险的。这同样适用于 sqlite3_stmt 对象,因为它们是 sqlite3 对象的“一部分”。

但是,您可以(并且通常这样做)有多个 sqlite3 连接到同一个数据库,即使在不同的进程中也是如此。 SQLite 将管理它们之间的并发性。

关于c++ - 多线程模式下的sqlite3 : what exactly is unsafe to perform?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35530619/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com