WebキットベースのブラウザでウェブSQLデータベースapiを使用しようとしています。私はasync apiをメインのUIスレッドとウェブワーカーで使用しています。どちらのスレッドも同じデータベースにアクセスします(これはsqlite underthehoodです)html5のローカルストレージはブラウザのUIスレッドとWebワーカースレッドで安全に使用できます
すべての動作は正常ですが、時々トランザクションが失われたり、1つのトランザクションが失敗したり、タイミング/競合状態にあるようです。基礎となるsqliteデータベースへのアクセスはスレッドセーフではないようです。
少し背景。私のWebワーカーは、メインuiスレッドからレコードが挿入されている可能性のあるテーブルに対してクエリを実行するだけです。
ローカル/ウェブストレージには、uiスレッドとWebワーカースレッドの両方から安全にアクセスできるものが実際にどこかに記載されていますか?私はどこか読んだことがあるindexeddb apiはスレッドセーフですが、ブラウザのサポートが悪い/存在しないため、私がターゲットとしているブラウザでは(少なくとも私はそう考えています。
)http://caniuse.comから任意の洞察力は感謝
私もその可能性はワーカースレッドにローカルストレージにアクセスするためにことを知りませんでしたか? http://stackoverflow.com/questions/6179159/accessing-localstorage-from-a-webworker –
はい、多分正しいでしょう。 WEB SQLデータベースはワーカースレッドからアクセスできるので、間違った前提を作った可能性があります。残念ながら、あなたは2つのブラウザから同じWeb SQLデータベースを開いても、スレッドセーフではないようです。 – paul
WebSQLは廃止予定です - スレッドセーフであっても、使用したくないと思います。まもなくwebWorkersでindexedDBをサポートします。 –