たとえば、listener, err := net.Listen("tcp", ":8081")
を使用してTCPポートでリッスンしていると仮定すると、listener.Accept()
を別のゴルーチンで同時に呼び出すことはできますか?受付速度を最大限にするのに役立ちますか?listener.Accept()を同時に呼び出す
1
A
答えて
4
net.Listenerは、フードの下にあるFileDescriptorです。 Accept()は、readLockで関数を保護してconnection-newFDを生成するPlan9機械を使用します。だからそれは安全に見えます。また、Lockは読み取り専用であり、排他的ではないので、あなたのスピードアップ呼び出しを同時に受け入れることができます。
+1
免責事項:私はGoの著者ではなく、ソースを調査するだけです。 – Uvelichitel
関連する問題
- 1. 複数のAPI URLを呼び出して同時に呼び出します
- 2. 非同期エンドポイントを同時に呼び出すJavaScript
- 3. ソケットリスナー複数同時AcceptAsync呼び出し
- 4. ToList()メソッド呼び出し時にデータベースを呼び出す
- 5. JavaのBlockingQueueに同時コールを呼び出す
- 6. 同時に2つの関数を呼び出す
- 7. C++:複数の* .exeを同時に呼び出す
- 8. 別のスレッドで同時に関数を呼び出す
- 9. Spring Javaで同時に複数のWebサービスを呼び出す
- 10. SqlAdapter.Updateを呼び出すと同時にSqlDataReader.Readを呼び出すときに問題があります
- 11. C# - 同時にWebサービスを呼び出し、スロットルで非同期にする
- 12. 同じファイルを同時に呼び出すときにPHPがブロックされる
- 13. 複数のajaxが同時に呼び出す
- 14. Android:リモートメッセンジャーサービスの呼び出し時にメソッドを同期
- 15. Retrofit2 with RxJava、同じサーバAPIを何度でも同時に呼び出す
- 16. C#別の値で同じ関数を同時に呼び出す
- 17. リロード時にjQueryプラグインを呼び出す
- 18. 一時テーブルにストアドプロシージャを呼び出す
- 19. 保存時にUserFormを呼び出す
- 20. 実行時にメソッドを呼び出す
- 21. コンパイル時にdecimal.ToStringを呼び出す
- 22. メソッドの同時呼び出しを集計する
- 23. anglejsで同時呼び出しを処理する
- 24. React Native - double ListViews関数呼び出し時に同時にレンダリングする
- 25. jqueryまたはjavascriptは複数のアクションを同時に呼び出していますが、同時に呼び出すことはありません
- 26. 実行時に式ツリーを呼び出すメソッドを呼び出す
- 27. AVQueuePlayerとAVAudioPlayerが同時に呼び出されました
- 28. ASHXとロングプロセスによる同時呼び出し
- 29. npmはトークンとヘッダー 'content-type'を同時に送信します: 'application/json'を同時に呼び出します
- 30. 非同期タスクメソッドが同時に呼び出されるのを防ぐ方法
正常に動作するはずですが、必要ありません。 'accept() 'の速度を最大にする方法は、接続を受け入れてスレッドを開始すること以外は何もしません。具体的には、I/Oを実行しないでください。これには、DNSルックアップが必要なものが含まれます。しかし、あなたがI/Oに対してこのルールを壊していない限り、 'accept()'スピードはサーバーパフォーマンスの重要な側面ではありません。 – EJP
ありがとうございます。私はすでに同様のことをしています。受け入れられた接続をチャネルに送信し、いくつかのアクセプタ(コアの数)がそのチャネルを処理しています。そしてそれは良いことです。しかし、 'Accept()'のドキュメントは、同時に呼び出されるのが安全であれば何も言いません(そして、私はソースコードを見て、それは安全と思われますが、完全に理解できませんでした)。 –