我使用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的回答),我会研究你的想法。谢谢! –