我使用recv()
來從套接字讀取數據,並且使用fcntl()
來設置套接字阻塞/非阻塞。我的問題是:如果我調用recv()
(阻塞),並且我從另一個線程調用fcntl()
並設置套接字非阻塞,那麼當前正在運行的recv()
返回或fcntl()
的效果將僅在阻塞recv()
返回後發生,我稱之爲再次?Blocking recv()vs fcntl()
1
A
回答
2
它不會影響當前的接收操作。
奇怪的事情要做。
+0
感謝您的回答!我想用這種方法喚醒阻塞線程,但我想我會考慮其他選項。 –
+0
@BertalanRadostyan:「*我想喚醒阻塞線程*」只需發送線程信號(確保'SA_RESTART'不是信號處理程序)。 – alk
相關問題
- 1. select(),recv()和EWOULDBLOCK on non-blocking sockets
- 2. cudaMemcpy&blocking
- 3. pipe2(...)vs pipe()+ fcntl(...),爲什麼不同?
- 4. socket select()vs non-block recv
- 5. Blocking Graphics.drawImage
- 6. CFWriteStreamCanAcceptBytes Blocking
- 7. recv與非阻塞套接字
- 8. MVC AsyncController Blocking
- 9. T_CONSTANT_ENCAPSED_STRING blocking ip
- 10. Corba non blocking orb
- 11. Haskell hClose blocking
- 12. ipTables blocking memcached
- 13. SSL_accept with blocking socket
- 14. WinForms WebBrowser blocking ProcessCmdKey
- 15. NSURLConnection sendSynchronousRequest not blocking
- 16. is document.write blocking
- 17. Canvas Blocking Page?
- 18. Redis Blocking保存
- 19. Tornado Blocking Code
- 20. 彗星的最佳途徑? (Non Blocking IO vs Erlang)
- 21. 爲的fcntl問題
- 22. .htaccess-Password is blocking cURL
- 23. CAS and Non Blocking Counter
- 24. Haskell async with blocking print
- 25. Boost ASIO socket io_service.run blocking
- 26. socket編程-recv()函數
- 27. Windows上的fcntl替換
- 28. 沒有模塊名爲fcntl
- 29. EAGAIN on recv()
- 30. pipe,fork和non-blocking IPC
試一試。奇怪的是,你想要一個套接字既是阻塞又是非阻塞的,並且有另一個線程處理狀態。在linux上,我將使用客戶端上的socket()和服務器上的accept4()來設置創建時的套接字非阻塞。 –
你只是試圖異步喚醒一個阻塞在'recv'調用的線程嗎?如果是這樣,即使'fcntl'產生期望的結果,也可能有更好/更安全的方法。例如,使用'poll'來阻止外部'recv'套接字*或*一個僅用於進程內通知的內部套接字。 –
@BrianMcFarland這正是我計劃要做的事情,但由於它根本不可行(根據EJP的回答),我會研究你的想法。謝謝! –