Mutex: 追加機能を拡張するには?

Mutex の基本的な使用法、実装原理、およびエラーが発生しやすいシナリオを学習しました。これは、Mutex のすべての側面をカバーしていると言えます。これらの内容をマスターできれば、ほとんどの開発シナリオで役に立ちます。

ただし、特定のシナリオでは、これらの基本機能では不十分です。現時点では、いくつかの拡張機能を開発する必要があります。いくつか例を挙げましょう。

たとえば、ミューテックスがゴルーチンによって取得され、解放されていない場合、ロックを要求する他のゴルーチンはブロックされ、ロックを取得する機会が得られるまで待機します。ブロックするのはあまり良い考えではない場合もあります. たとえば, カウンタを更新するためにロックを要求した場合, ロックを取得できない場合は待つ必要はありません. 最悪の場合, 今度は更新しないと,次回更新します ブロックすると業務処理能力の低下につながります。

別の例として、ロックの競合を監視したい場合、監視指標はロックを待っているゴルーチンの数です。このインジケーターを時系列データベースにプッシュし、いくつかの監視システム (Grafana など) を介して表示できます。ロックはパフォーマンス低下の「原因」の 1 つであるため、ロックの競合を効果的に減らすと、パフォーマンスが大幅に向上することを知っておく必要があります。したがって、キーミューテックスで待機しているゴルーチンの数を監視することは、ロック競合の激しさを分析するための重要な指標です。

実際、ロックを必要としないゴルーチンが待機し続けるか、ロックを監視したいかどうかに関係なく、標準ライブラリのミューテックスの実装に基づいて、ハッカーを介してミューテックスにいくつかの追加機能を追加できます。このレッスンでは、TryLock の実装、ウェイター数などのインジケーターの取得、スレッドセーフ キューの実装など、いくつかの拡張機能の実装について説明します。

トライロック

おすすめ

転載: blog.csdn.net/guofeidageda/article/details/130064953