並行処理を行う Go アプリケーションを自信を持って構築しましょう。レースコンディションやリソースリークを回避するための、ゴルーチン、チャネル、ワーカープール、グレースフルシャットダウンの本番環境対応パターンを学びます。
スキルZIPをダウンロード
Claudeでアップロード
設定 → 機能 → スキル → スキルをアップロードへ移動
オンにして利用開始
テストする
「go-concurrency-patterns」を使用しています。 3 つのワーカーを持つワーカープールを作成し、チャネルからジョブを処理する
期待される結果:
これは 3 つのワーカーを持つワーカープール実装で、ジョブを並行処理し、sync.WaitGroup を使用した適切な同期処理により結果チャネルを通じて結果を収集します。
「go-concurrency-patterns」を使用しています。 並行 HTTP リクエストに errgroup を使用する方法を示す
期待される結果:
この例は golang.org/x/sync/errgroup を使用して複数の URL を並行取得する方法を示しており、最初のエラーが発生するとコンテキスト伝播を通じて保留中のすべてのリクエストをキャンセルします。
「go-concurrency-patterns」を使用しています。 並行操作を制限するためのセマフォを実装する
期待される結果:
2 つのセマフォアプローチを提供します:golang.org/x/sync/semaphore.Weighted を使用した重み付きセマフォと、シンプルなレート制限のためのチャネルベースの struct{} セマフォです。
セキュリティ監査
安全All 44 static analysis findings are false positives from markdown-enclosed Go code examples. The skill contains legitimate educational content about Go concurrency patterns with no executable code or security risks.
品質スコア
作れるもの
並行マイクロサービスの構築
ワーカープールを備えたスケーラブルな Go サービスを作成し、リソースを効率的に管理しながら複数のリクエストを並行して処理します
データ処理パイプラインの実装
適切なエラーハンドリングとキャンセル機能を備え、大規模データセットを並列処理するためのファンアウト/ファンインパイプラインを設計します
レースコンディションのデバッグ
適切な同期パターンとレース検出ツールを使用して、既存の Go コードの並行処理バグを特定し修正します
これらのプロンプトを試す
5 つの並行ワーカーで 100 のジョブを処理する Go のワーカープールを作成する方法を示してください
SIGTERM シグナルを処理し、処理中のリクエストの完了を待機するグレースフルシャットダウンを備えた Go サーバーを作成してください
3 つのステージで各ステージあたり 5 つのワーカーを持つ Go のファンアウト/ファンインパイプラインを作成してください
この Go コードを確認して潜在的なゴルーチンリークを特定し、コンテキストキャンセルを使用して修正する方法を示してください
ベストプラクティス
- 並行操作ではキャンセルとデッドラインのために常に context.Context を使用する
- パニックを回避するためにチャネルは送信側からのみクローズする
- ゴルーチン間の通信用にミューテックスよりもチャネルを優先する
- sync.WaitGroup または errgroup を使用してゴルーチンの完了を待機する
回避
- チャネルや WaitGroup などの適切なプリミティブの代わりに time.Sleep を同期処理に使用する
- 受信側からチャネルをクローズしてパニックを引き起こす
- ctx.Done() のチェックを忘れ、ゴルーチンリークにつながる
- 適切な同期処理なしにゴルーチン間でメモリを共有する
よくある質問
Go における並行プログラミングと並列プログラミングの違いは何ですか?
チャネルとミューテックスはいつ使用すべきですか?
ゴルーチンリークを防止するにはどうすればよいですか?
sync.WaitGroup の目的は何ですか?
Go コードでレースコンディションを検出するにはどうすればよいですか?
バッファチャネルとノンバッファチャネルの違いは何ですか?
開発者の詳細
作成者
sickn33ライセンス
MIT
リポジトリ
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/go-concurrency-patterns参照
main
ファイル構成