代码之家  ›  专栏  ›  技术社区  ›  Tom

SQLite3和多进程

  •  38
  • Tom  · 技术社区  · 16 年前

    3 回复  |  直到 12 年前
        1
  •  26
  •   laalto    16 年前

    BEGIN IMMEDIATE; END; DEFERRED 这意味着仅在第一次实际写入尝试时获取锁。随着 IMMEDIATE SQLITE_BUSY

    n sqlite3_busy_handler() sqlite3_busy_timeout()

        2
  •  5
  •   sharptooth    16 年前

    或者,您可以在MS Windows上使用操作系统同步互斥体,或者在其他操作系统上使用类似的东西。该进程将尝试获取互斥体,如果其他进程已经持有它,则该进程将被阻止,直到其他进程完成操作并释放互斥体。应注意防止进程获取静音文本然后从不释放它的情况。

        3
  •  3
  •   Andrew Barber Eric Lafortune    13 年前

    在SQLite中,您正在使用

    提交事务

    配对以分隔您的交易。将SQL代码置于两者之间,以便在单个事务中执行。

    然而,如果你的代码交错写和读访问,情况会发生很大变化。使用SQLite,即使只有一个编写器处于活动状态,您的整个数据库文件也会被锁定。

    推荐文章