0

次の問題に直面しています。クローラーを実装しました。最後の 1 秒間に実行されたリクエストの数と、最後の 1 秒間にダウンロードされたデータの量を知りたいです。

現在、ロックを使用して実装しています。私のバージョンでは、キューと 2 つのカウンター (カウントと合計) を使用しています。タスクが完了したら、カウンターを増やすだけで、イベント (現在の日付を含む) をキューに追加します。カウンターの値を取得したい場合は、キュー内に 1 秒以上前のものがあるかどうかを確認します。もしそうなら、私はそれをデキューし、カウンターを適切に減らします。次に、必要な結果を返します。

このバージョンはうまく機能しますが、トレーニング目的で、ロックの代わりにアトミック操作を使用して再実装したいと思います。それにもかかわらず、私は「クリーニング操作」に行き詰まっていることを認めなければなりません. (古い値のデキュー)

それで、これはこれを実装するための良いアプローチですか?

他にどのアプローチを使用できますか?

ありがとう !

4

1 に答える 1