ホームページ  >  記事  >  バックエンド開発  >  Go のガベージ コレクターは使用中に ZeroMQ ソケットを削除します

Go のガベージ コレクターは使用中に ZeroMQ ソケットを削除します

WBOY
WBOY転載
2024-02-05 21:30:081039ブラウズ

Go 的垃圾收集器在使用时删除 ZeroMQ 套接字

#質問内容

zeromq と go を使って分散システムを開発しています。これは分散台帳のようなものなので、コンテンツを取得して追加できます。 get リクエストと add リクエストを自動的に行うクライアントがあります。プログラムは数秒間は正常に実行されますが、その後「パニック: 非ソケットでのソケット操作」というエラーが発生してクラッシュします。

debug.setgcpercent(-1) を使用してガベージ コレクターをオフにしようとしましたが、この解決策が完全に正しいわけではないと確信しています。 これはサーバーの初期化コードです

リーリー

これはサーバーを制御する関数です

リーリー

コード全体は私の github にあります

なぜこれが起こっているのか知っている人がいたら、私の論文を保存してください。ありがとうございます


正解


問題は、受信ソケットを

Receive_socket zmq.Socket で宣言したことですが、*Receive_socket である必要があります。 zmq .ソケット。ポインタは単なるコピーであるため、GC によってガベージと見なされます。

以上がGo のガベージ コレクターは使用中に ZeroMQ ソケットを削除しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。