我已经实现了一个C ++类,它启动一个单独的线程接受连接(使用boost::asio
)。 整个class级打算成为一个更大程序的asynchronous“命令接收器”。
主要的麻烦是:当等待传入的连接时,线程基本空闲。 我的看法是,这是浪费处理器时间(和硬件线程)什么都不做。 有没有什么办法可以执行低优先级的线程,或者是让线程不会干扰主程序,这是一个任务密集型和线程化的方式?
如果您或您使用的类正在进行accept
调用,则该线程被阻塞,正在等待操作系统执行某些操作。 所以线程是(应该)不消耗任何CPU资源,如果这样做,它也是
accept
。 如果有任何参数要改变这个,试试吧! 假设你正在使用boost线程类,你可以使用boost线程中的native_handle()句柄函数来改变线程的优先级。 这是一个小例子。
但首先我会建议你确认你确实有问题。 无论如何,你所关心的线程应该是有效的。