ソケットからデータを読み取るのにrecv()
、ソケットブロッキング/ノンブロッキングを設定するのにfcntl()
を使用しています。私の質問は:recv()
(ブロッキング)を呼び出し、別のスレッドからfcntl()
を呼び出してソケットを非ブロッキングに設定した場合、現在実行中のrecv()
リターンまたはfcntl()
の結果は、ブロッキング後にのみ発生し、recv()
が返されます再び?ブロッキングrecv()vs fcntl()
1
A
答えて
2
現在の受信動作には影響しません。
奇妙なことです。
+0
答えをありがとう!私はこのメソッドを使用してスレッドをブロックする目を覚ましたかったのですが、私は他のオプションを検討すると思います。 –
+0
@BertalanRadostyan: "*ブロッキングスレッドを目覚めさせたい*"スレッドにシグナルを送ります(SA_RESTARTがシグナルハンドラでないことを確認してください)。 – alk
関連する問題
- 1. fcntlの代わりに
- 2. C#スレッディングとブロッキング
- 3. ブロッキングCSSホバー
- 4. NSOperationQueueブロッキングのデバッグ
- 5. ERLANG wait()とブロッキング
- 6. のfcntl問題なし手動入力
- 7. ウィンドウ内のインポート方法fcntlモジュール
- 8. fcntl()スコープの可視性の動作?
- 9. EAGAIN on recv()
- 10. UIButtonブロッキングtouchesBeganとtouchesMoved
- 11. TelnetブロッキングC#TCPサーバー
- 12. 非ブロッキングのpythonソケット
- 13. java非ブロッキングHTTPクライアント
- 14. MPIで非ブロッキングの送信とブロッキング受信の使用?
- 15. Python Linux Netlink Recvバッファー
- 16. epoll recv戻り値
- 17. WinSock2エラー10093 on recv
- 18. ノンブロッキングソケットのselect()、recv()、EWOULDBLOCK
- 19. recv from edge-triggered mode
- 20. recv()内の遅延
- 21. Android - 非ブロッキング回転ProgressDialog
- 22. Erlang ssl非ブロッキング並列アクセプタ
- 23. Javaで非ブロッキング接続
- 24. PySerialノン・ブロッキング読みループ
- 25. なしブロッキングsetTimeout(fn、0)
- 26. Javascriptは同期(ブロッキング)または非同期(非ブロッキング)でデフォルトでは
- 27. Recvリングバッファーと単純バッファー
- 28. )(RECV前にエラーをチェック
- 29. ソケットselect()とnon-block recv
- 30. Winsock recv Detoursとのフック
試してみてください。ソケットがブロッキングと非ブロッキングの両方になり、ステータスで別のスレッドが邪魔になることが奇妙です。 linuxでは、クライアント上でsocket()、サーバ上でaccept4()を使用して作成時にソケット非ブロックを設定します。 –
'recv'呼び出しでブロックされたスレッドを非同期で起床しようとしていますか?もしそうなら、 'fcntl'が望みの結果をもたらすとしても、おそらくもっと良い/より安全な方法があります。例えば、 'poll'を使って外部の' recv'ソケット*または*プロセス内通知のためだけに使用される内部専用ソケットをブロックします。 –
@BrianMcFarlandこれはまさに私がやろうとしていたことですが、EJPの答えによればうまくいかないので、私はあなたのアイデアを検討します。ありがとう! –