我正在从多个串行端口读取数据。目前我正在使用自定义信号处理程序(通过设置sa_handler)根据文件描述符信息来比较和唤醒线程。我正在寻找一种解决方案,让单个线程拥有独特的信号处理程序,在这方面,我发现要使用选择系统调用。在线程中选择()系统调用?
现在我以下的问题:
- 如果我使用一个线程(QT),那么我应该把选择的系统调用监控的串行端口?
- 选择系统调用线程安全吗?
- 它是CPU密集型的,因为我的应用程序中发生了很多事情,包括GUI更新?
请不要介意,如果您发现这些问题很荒谬。我从来没有使用过这样的串行通信机制。
Gud info!一个问题。线程如何知道它需要唤醒,如果套接字fd准备好进行读/写操作。内核是否给线程一些中断? – 2013-05-19 18:20:20