- 何かがタスクを要求します
- 他の何かがストレージからタスク リストを引き出し、そこにタスクがあるかどうかを確認します。
- タスクがある場合、1 つが削除され、小さい方の「タスク リスト」がストレージに戻されます。
ステップ 2 と 3 の間で、複数のリクエストが発生すると競合状態が発生する可能性があり、同じタスクが 2 回処理されます。
他のリクエストを防ぐために、単一のタスクが「チェックアウト」されている間に「タスクテーブル」を「ロック」する正しい解決策はありますか?
実行の遅延など、パフォーマンスへの影響が最も少ないソリューションは何ですか? chrome.storage API を使用して JavaScript でどのように実装する必要がありますか?
たとえば、いくつかのコード:
function decide_response ( ) {
if(script.replay_type == "reissue") {
function next_task( tasks ) {
var no_tasks = (tasks.length == 0);
if( no_tasks ) {
target_complete_responses.close_requester();
}
else {
var next_task = tasks.pop();
function notify_execute () {
target_complete_responses.notify_requester_execute( next_task );
}
setTable("tasks", tasks, notify_execute);
}
}
getTable( "tasks", next_tasks );
...
}
...
}