# README
サンプルリスト
このディレクトリには以下のサンプルがあります。
file | example name | note |
---|---|---|
forgotten_sender.go | goroutines_leak_forgotten_sender | チャネルの送信側を忘れることにより発生するgoroutineリークのサンプルです |
forgotten_receiver.go | goroutines_leak_forgotten_receiver | チャネルの受信側を忘れることにより発生するgoroutineリークのサンプルです |
abandoned_sender.go | goroutines_leak_abandoned_sender | 処理のタイミングによって受信側がいなくなり、送信側が放棄されてしまうgoroutineリークのサンプルです |
abandoned_receiver.go | goroutines_leak_abandoned_receiver | 処理のタイミングによって送信側がいなくなり、受信側が放棄されてしまうgoroutineリークのサンプルです |
sender_after_error_check.go | goroutines_leak_sender_after_error_check | 処理結果によって送信側がいなくなり、受信側が放棄されてしまうgoroutineリークのサンプルです |
# Functions
AbandonedReceiver -- goroutineリークが発生するパターンのサンプルです。
チャネルの送受信の実装があるが、タイミングによっては送信側がいなくなってしまうパターン。 受信側のgoroutineが永遠に待ち続けるので終了しません。
解決方法としては、送信側が適切に使い終わったチャネルを閉じること。
REFERENCES: - https://betterprogramming.pub/common-goroutine-leaks-that-you-should-avoid-fe12d12d6ee.
AbandonedSender -- goroutineリークが発生するパターンのサンプルです。
チャネルの送受信の実装があるが、タイミングによっては受信側がいなくなってしまうパターン。 送信側のgoroutineが永遠に待ち続けるので終了しません。
解決方法としては、Bufferedなチャネルを使うこと。
REFERENCES: - https://betterprogramming.pub/common-goroutine-leaks-that-you-should-avoid-fe12d12d6ee.
ForgottenReceiver -- goroutineリークが発生するパターンのサンプルです。
チャネルを作成し、チャネルの受信側がいないパターン。 送信側のgoroutineが永遠に待ち続けるので終了しません。
解決方法としては、Bufferedなチャネルを使うこと。
REFERENCES: - https://betterprogramming.pub/common-goroutine-leaks-that-you-should-avoid-fe12d12d6ee.
ForgottenSender -- goroutineリークが発生するパターンのサンプルです。
チャネルを作成し、チャネルの送信側がいないパターン。 受信側のgoroutineが永遠に待ち続けるので終了しません。
解決方法としては、送信側が適切に使い終わったチャネルを閉じること。
REFERENCES: - https://betterprogramming.pub/common-goroutine-leaks-that-you-should-avoid-fe12d12d6ee.
NewRegister -- このパッケージ用のサンプルを登録する mapping.Register を生成します。.
SenderAfterErrorCheck -- goroutineリークが発生するパターンのサンプルです。
チャネルの送受信の実装があるが、内部の処理結果によっては送信側がいなくなってしまうパターン。 受信側のgoroutineが永遠に待ち続けるので終了しません。
解決方法としては、送信側が適切に使い終わったチャネルを閉じること。
REFERENCES: - https://betterprogramming.pub/common-goroutine-leaks-that-you-should-avoid-fe12d12d6ee.