使用accept()(Linux)的Boost线程中的性能/优先级

我已经实现了一个C ++类,它启动一个单独的线程接受连接(使用boost::asio )。 整个class级打算成为一个更大程序的asynchronous“命令接收器”。

主要的麻烦是:当等待传入的连接时,线程基本空闲。 我的看法是,这是浪费处理器时间(和硬件线程)什么都不做。 有没有什么办法可以执行低优先级的线程,或者是让线程不会干扰主程序,这是一个任务密集型和线程化的方式?

如果您或您使用的类正在进行accept调用,则该线程被阻塞,正在等待操作系统执行某些操作。 所以线程是(应该)不消耗任何CPU资源,如果这样做,它也是

  • 在系统调用(没有你可以改变)或者
  • 有一个超时,线程正在循环accept 。 如果有任何参数要改变这个,试试吧!

假设你正在使用boost线程类,你可以使用boost线程中的native_handle()句柄函数来改变线程的优先级。 这是一个小例子。

但首先我会建议你确认你确实有问题。 无论如何,你所关心的线程应该是有效的。