我已经实现了一个C ++类,它启动一个接受连接的单独线程(使用boost::asio
)。整个类旨在成为更大程序的异步“命令接收器”。
主要问题是:在等待传入连接时,线程基本上处于空闲状态。我的看法是浪费处理器时间(和硬件线程),什么都不做。有没有办法以较低的优先级执行线程,或者某种其他方式使线程不干扰主程序,这既是任务密集型又是线程化的?
答案 0 :(得分:3)
如果您或您使用的类正在进行accept
调用,则该线程将被阻止并等待操作系统执行某些操作。所以线程(应该)不消耗任何CPU资源,如果它这样做,它就是
accept
。如果
有任何参数可以改变这一点,试试吧!答案 1 :(得分:1)
假设您正在使用boost线程类,您可以使用boost线程中的native_handle()句柄函数来更改线程优先级。 Here是一个小例子。
但首先我建议你确认你确实遇到了问题。无论如何,你关心的话题应该是有效的闲置。