我有一个线程A,在循环中调用poll()
。此线程负责传入和传出连接上的IO。但是,当线程B打开一个传出连接时,它必须以某种方式将它给予A.您认为在打开套接字后B写入的线程A(读取端)和B(写入端)之间有一个管道是个好主意吗?如何判断当前或即将阻止的线程在poll()中执行某些操作?
2
A
回答
4
这听起来很合理。 poll
应该很高兴看着管道旁边的管道。
1
而不是一个实际的管道,你可以看看使用socket pair。您可以创建一个unix-domain套接字对,并使用send()
或sendmsg()
将消息发送到被阻止的线程。这种方法可能对您更方便。 Unix域套接字也支持在进程之间传递文件描述符,尽管这对你的应用程序来说是过分的。
另一种方法是用信号中断对poll()
的呼叫。请参阅this question。
相关问题
- 1. 阻止活动在后台执行某些操作
- 2. 如何使用GCD立即在主线程上执行某些操作?
- 3. 如何在执行某些操作之前确保其他线程已完成
- 4. 在C#中触发事件阻止当前线程执行?
- 5. 在AFNetworking的同一线程中执行某些操作
- 6. 当我执行syncdb时,如何阻止django同步某些表?
- 7. 如何在Unity3d中运行进程时执行某些操作
- 8. 当用户中止连接时执行某些操作(Sinatra + Thin)
- 9. 阻止当前线程RXJS
- 10. 防止线程执行某些方法
- 11. 如何在用银线条删除后“执行某些操作”
- 12. Jmeter中可能对线程故障执行某些操作吗?
- 13. Android:使用线程在指定时间执行某些操作
- 14. Observable concatMap在主线程上执行某些操作
- 15. Python的线程 - 阻塞操作 - 终止执行
- 16. 如何判断某个进程当前打开了哪些文件(即我的应用程序)?
- 17. 带插座I/O阻塞操作的中断/停止线程
- 18. 如何阻止当前包含在PHP中的执行?
- 19. 如何判断当前线程是否正在冒充?
- 20. 即使在UI线程上执行时的跨线程操作
- 21. Nodejs读取某些进程的stdout并执行某些操作
- 22. 如何让表单中的提交按钮在执行表单操作之前执行某些操作
- 23. 如何阻止某些SQL查询在SQL Server 2008上执行
- 24. 如何知道我是否在UI线程上执行某些操作?
- 25. 在当前线程正在执行时阻止执行语句块的其他线程
- 26. 如何判断JPA EntityManager.merge是否正在执行插入操作或更新
- 27. 事件在当前线程或新线程中执行
- 28. 阻止当前线程,类似的getchar()
- 29. 如何判断当前应用程序中的所有后台线程何时完成执行?
- 30. 当用户按下按钮或执行某些操作时如何发送NSLogs
好的,谢谢 - 如果没有更好的方法,我想我必须这样做。 – thejh 2012-04-23 19:07:23