我在具有多个线程但只有一个进程的环境中对事务使用Berkeley数据库。Berkeley DB:在不读取记录的情况下锁定记录
因为我只有一个进程,所以我想缓存来自某些记录的数据的解析表示,以便我不必每次访问时都不必要地重新解析它,但是如果我执行如果在访问缓存数据时没有发出任何数据库操作,我会明显不遵守锁定协议,导致事务不能相互隔离。
我明显可以通过在我打算在事务中使用的记录上运行get
操作来解决这个问题,但这在I/O方面似乎没有必要,而且也很丑陋,因为我实际上并不需要重新编译,读取数据。有没有办法锁定“好像”我已发出get
操作?
同样,有没有办法做到相应的写锁put
操作,因为我需要修改的缓存数据(这需要以串行的数据实际上put
它之前完成的)之前做呢?