ホームページ > バックエンド開発 > Golang > 新しい atomic.Pointer 型を使用したロックフリーの無制限キューの実装

新しい atomic.Pointer 型を使用したロックフリーの無制限キューの実装

PHPz
リリース: 2024-02-09 11:30:20
転載
874 人が閲覧しました

新しい atomic.Pointer 型を使用したロックフリーの無制限キューの実装

php エディター Strawberry は今日、新しい atomic.Pointer 型を使用してロックフリーで無制限のキューを実装する新しいテクノロジーを紹介します。並行プログラミングでは、キューは一般的なデータ構造ですが、従来のキューの実装では通常、スレッドの安全性を確保するためにロックを使用する必要があり、これによりパフォーマンスの損失が発生します。新しい atomic.Pointer 型は、効率的な同時キュー操作を実現できるロックフリーのソリューションを提供します。以下では、この新しい実装とその利点、使用方法を詳しく紹介します。

質問内容

マイケルとスコットのノンブロッキングキューを実装しようとしています。

go 1.19 で導入された新しい atomic.pointer 型を使用しようとしていますが、アプリケーションでデータ競合が発生しています。

これは私の実装です:

リーリー

ここで、データ競合なしでアプリケーションで動作する別の実装を見つけましたが、この 2 つの違いが正確に何かはわかりません。

ヘルプやフィードバックをお寄せいただきありがとうございます。

解決策

いくつかの点を変更すると問題を解決できることがわかりました。

最初の変更:

リーリー

2 番目の変更は、dequeue() リターン署名を変更することです。

最終的なファイルは次のようになります:

リーリー

以上が新しい atomic.Pointer 型を使用したロックフリーの無制限キューの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート