recv()
を定期的に呼び出すコードがあります(MSG_DONTWAIT
フラグ付き)。私はvtuneで自分のコードをプロファイリングするので好奇心が強いです。私はsigprocmask()
という呼出しがrecv()
に関連付けられているのを見ています。実行にはかなりの時間を要しています。私はなぜrecv()
がsigprocmask()
を呼んでいるのか不思議です。recvシステムコールを呼び出すときにsigprocmaskが呼び出されるのはなぜですか?
6
A
答えて
0
おそらくrecvは、シグナルがブロックされた場合に他の方法では見られない関連シグナルが生成されたかどうかを知ることができます。 EAGAIN/EWOULDBLOCKは、ブロックされる可能性のあるシグナルを使って時々生成されるerrnoの値として気になります。 sigprocmask
man pageを見ましたか?
1
linuxの下でTCPソケットを使って作業する場合、相手側が予期せず閉じられた場合、SIGPIPEを受信します。
あなたは、この信号をマスクすることができますので、(ほとんどの時間を、あなたは0の戻り値を自分で処理します、あなたは、この信号を気にしない)、私は信号状態のためシステムライブラリのチェックを推測、マスクされている場合は、より高速なコードパスを使用します。
そうでない場合、最適化することはできません。
ところで、あなたはpselect()について知っていますか?
関連する問題
- 1. strcpy()を呼び出すときに、対応するサブルーチン呼び出しがマシンコードのダンプで呼び出されないのはなぜですか?
- 2. C++システムコールでtskillを呼び出すことができない
- 3. onReceiveが呼び出されないときに呼び出される
- 4. コントローラが呼び出された後にhtml.erbファイルが呼び出されるのはなぜですか?
- 5. mallocはシステムコールを呼び出さないのですか?
- 6. wowzaサーバーを呼び出すときにonHTTPRequest()が呼び出されない
- 7. viewWillDisplayearがpopToRootViewControllerAnimatedを呼び出すときに呼び出されない
- 8. pjaxを呼び出すときに$(document).ready()で呼び出されたjqueryを呼び出す方法は?
- 9. MSBuildスクリプトからdevenv.exeを呼び出すと、なぜVS2008のインストーラが呼び出されるのですか?
- 10. アプリケーションがバックグラウンドから呼び出されたときにメソッドを呼び出す
- 11. textFieldShouldBeginEditingが呼び出され、textFieldDidBeginEditingが呼び出されない
- 12. なぜTreeViewer.refresh()を呼び出すとcontentProviderのgetChildren(Object)メソッドが呼び出されないのですか?
- 13. OnResume()を呼び出すときにApp.xaml.cs ctorが呼び出される
- 14. 謎:Qtでは、なぜeditorEventが呼び出されますが、createEditorは呼び出されませんか?
- 15. デストラクタが呼び出されるのはなぜですか?
- 16. C#、WinForms:なぜRefresh()を呼び出すとOnPaintBackgroundが呼び出されないのですか?
- 17. startActivityForResult()を呼び出すときにonDestroy()が呼び出されます
- 18. BackgroundWorker.OnDoWorkが呼び出されないのはなぜですか?
- 19. クラスが呼び出されないのはなぜですか?
- 20. afterRenderが呼び出されないのはなぜですか?
- 21. FirebaseInstanceIdService.onTokenRefresh()が呼び出されないのはなぜですか?
- 22. コールバックが呼び出されないのはなぜですか?
- 23. gameCenterViewControllerDidFinishが呼び出されないのはなぜですか?
- 24. アクションフィルタが呼び出されないのはなぜですか?
- 25. コンストラクタが呼び出されないのはなぜですか?
- 26. DefaultAnnotationHandlerMappingが呼び出されないのはなぜですか?
- 27. メソッドが呼び出されないのはなぜですか?
- 28. -didDeselectRowAtIndexPathが呼び出されないのはなぜですか?
- 29. デリゲートメソッドが呼び出されないのはなぜですか?
- 30. ViewForAnnotationが呼び出されないのはなぜですか?
この現象を再現する可能な限り小さなコードの関連トレースを確認できますか?デモコードも見ることができますか?信号マスクに何が行われているかを正確に見ることができます。 – pilcrow
'recv()'に対するこれらの呼び出しの文脈について詳しく説明できますか?どのようなソケットを使用していますか?あなたは 'recv()'を直接呼びますか? – alk