2012-02-15 8 views
6

Ho cercato di utilizzare il database web sql api nei browser basati su webkit. Ho utilizzato l'API asincrono nel thread principale e un operatore Web . Entrambi i thread accedono allo stesso database (che come sapete è sqlite underthehood)Quale spazio di archiviazione locale in html5 posso usare in modo sicuro nel thread del browser e nella thread del web worker

Tutto si comporta bene ma occasionalmente le transazioni vengono perse o una transazione fallisce e sembra essere una condizione di timing/race. Sembra che l'accesso al database sqlite sottostante non sia thread-safe.

Un po 'più di sfondo. Il mio web worker sta semplicemente eseguendo una query su una tabella che potrebbe contenere un record inserito dal thread ui principale.

Mi chiedo se sia effettivamente documentato da qualche parte cosa è possibile accedere in modo sicuro allo storage locale/web dal thread dell'interfaccia utente e dal thread di lavoro Web? Ho letto da qualche parte che l'indice indexeddb api è thread-safe ma che non mi aiuta in questo momento poiché il supporto del browser per questo è scarso/inesistente per i browser che sto prendendo di mira (almeno credo) - Ottengo le mie informazioni da http://caniuse.com)

Eventuali approfondimenti sarebbero ben accetti

+0

Io non sapevo nemmeno che la sua possibilità di accedere allo storage locale nei thread di lavoro? Vedi http://stackoverflow.com/questions/6179159/accessing-localstorage-from-a-webworker –

+0

Sì forse hai ragione. Forse ho fatto l'ipotesi errata poiché i database WEB SQL sono accessibili dal thread worker. Sfortunatamente non sembrano essere thread-safe quando apri lo stesso database web sql da 2 il browser ui e il web worker. – paul

+2

WebSQL è deprecato - quindi suppongo che tu non voglia utilizzarlo (anche se fosse thread-safe). Presto avremo indicizzato il supporto di DB in webWorkers. –

risposta

Problemi correlati