Web アプリケーションで潜在的な競合状態に直面しています。
# get the submissions so far from the cache
submissions = cache.get('user_data')
# add the data from this user to the local dict
submissions[user_id] = submission
# update the cached dict on server
submissions = cache.update('user_data', submissions)
if len(submissions) == some_number:
...
ロジックは単純です。まず、Web サーバーのキャッシュに保存されている共有辞書をフェッチし、送信 (サーバーへの各要求によって配信される) をそのローカル コピーに追加します。次に、キャッシュされたコピーをこの更新されたローカルに置き換えることで更新します。コピー。最後に、特定の数のデータを受け取った場合は、別のことを行います。注意してください
submissions = cache.update('user_data', submissions)
キャッシュからディクショナリの最新のコピー、つまり新しく更新されたものを返します。
サーバーは複数の要求を (それぞれ独自のスレッドで) 同時に処理する可能性があり、これらすべてのスレッドが前述のようにキャッシュ内の共有ディクショナリにアクセスするため、競合状態が発生する可能性があります。
Web プログラミングのコンテキストでは、パフォーマンスをあまり犠牲にすることなく、この特定のケースで競合状態を防ぐためにスレッドを効率的に処理するにはどうすればよいのでしょうか。いくつかのコード例をいただければ幸いです。