Web Locks API
同一オリジンのタブやワーカーをまたいでクリティカルセクションを調整するブラウザAPI。特定のタブの外側に存在するミューテックスのようなもの。
APIは小さい。navigator.locks.request('name', async lock => {...}) で使う。排他モードと共有モード、ブロックしない「ifAvailable」、そして死んだタブからロックを奪う steal フラグに対応する。コールバックのPromiseが解決すると、ロックは自動的に解放される。
用途は、2つのタブが同時にIndexedDBへ書き込む競合の回避、バックグラウンド同期の調整、タブ間の「リーダー選出」など。Chrome/Edge/Firefoxでは2020年から、Safariでは15.4以降で安定している。