我在多进程场景中使用sqlite。sqlite库是使用线程安全序列化模式编译的( -DSQLITE_THREADSAFE=1 ).
-DSQLITE_THREADSAFE=1
我希望收到有关数据更改的通知并找到 sqlite3_update_hook . 每个进程都会注册自己的更新挂钩,以便收到数据库更改的通知。
sqlite3_update_hook
现在的问题是:如果进程a修改数据库,是否会调用进程B的更新挂钩?或者挂钩是否只在同一进程或同一连接中工作?
遗憾的是,文件对此并不十分清楚。
这个 documentation 说:
sqlite3\u update\u hook()接口使用第一个参数标识的数据库连接注册回调函数
数据库连接是本地对象;在这个或另一个过程中,对于任何其他连接,钩子都不会开火。