我一直在尝试在基于 webkit 的浏览器中使用 web sql database api。我一直在主ui 线程 和web worker 中使用async api。两个线程都访问同一个数据库(如您所知,它是底层的 sqlite)
一切正常,但有时交易会丢失或一个交易失败,这似乎是一个计时/竞争条件。看来对底层 sqlite 数据库的访问不是线程安全的。
更多的背景。我的 web worker 只是对一个表执行查询,该表可能从主 ui 线程插入了一条记录。
我想知道它是否真的在某个地方记录了什么本地/网络存储可以从用户界面线程和网络工作线程安全地访问?我在某处读到 indexeddb api 是线程安全的,但这对我现在没有帮助,因为浏览器对它的支持很差/不存在我的目标浏览器(至少我是这样认为的) - 我的信息来自 http://caniuse.com )
任何见解将不胜感激
最佳答案
您不能使用 WebWorkers 中的 localStorage 或 sessionStorage。
虽然两者都是同步操作,但对于简单的数据写入和读取而言,它们并不是真正的问题。该问题在浏览器启动时更为相关,但这是浏览器实现问题。
看看这个,它应该有帮助:http://www.nczonline.net/blog/2012/04/25/the-performance-of-localstorage-revisited/
关于javascript - 我可以在浏览器 ui 线程和 web 工作线程中安全地使用 html5 中的哪些本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9295433/