我实现了一个c++类,它启动一个单独的线程接受连接(与boost::asio
)。整个类旨在成为更大程序的异步"命令接收器"。
主要的问题是:当等待传入的连接时,线程基本上是空闲的。我的看法是,什么都不做是在浪费处理器时间(和硬件线程)。是否有任何方法以较低的优先级执行线程,或者有其他方法使线程不干扰主程序,这是任务密集型和线程?
如果您或您使用的类正在执行accept
调用,则线程被阻塞并等待操作系统做一些事情。所以线程(应该)不消耗任何CPU资源,如果它这样做,它是
- 在系统调用内(你不能改变什么)或
- 超时,线程再次循环到
accept
。如果有任何参数可以改变这一点,试试吧!
假设您正在使用boost线程类,您可以通过在boost线程中使用native_handle()句柄函数来更改线程优先级。下面是一个小例子:
但首先我建议你确认你真的有问题。无论如何,您所关心的线程应该是有效空闲的。