我已经实现了一个 C++ 类,它启动一个单独的线程接受连接(使用 boost::asio
)。整个类旨在成为更大程序的异步“命令接收器”。
主要的问题是:在等待传入连接时,线程基本上处于空闲状态。我的看法是,这只是浪费处理器时间(和硬件线程),什么都不做。有没有办法以较低的优先级执行线程,或者通过其他方式使线程不干扰主程序,这既是任务密集型又是线程化的?
最佳答案
如果您或您使用的类正在执行 accept
调用,则线程将被阻塞并等待操作系统执行某些操作。所以线程(不应该)消耗任何CPU资源,如果这样做的话,它要么是
- 在系统调用中(您无法更改任何内容)或
- 超时,线程正在循环以再次
接受
。如果 有任何参数可以改变这个,试试吧!
关于c++ - 使用 Accept() 的 Boost 线程中的性能/优先级 (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6733093/