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

Performance/priority in Boost thread with accept() (Linux)

本文关键字:优先级 Linux 性能 Boost accept 使用 线程      更新时间:2023-10-16

我实现了一个c++类,它启动一个单独的线程接受连接(与boost::asio)。整个类旨在成为更大程序的异步"命令接收器"。

主要的问题是:当等待传入的连接时,线程基本上是空闲的。我的看法是,什么都不做是在浪费处理器时间(和硬件线程)。是否有任何方法以较低的优先级执行线程,或者有其他方法使线程不干扰主程序,这是任务密集型和线程?

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

  • 在系统调用内(你不能改变什么)或
  • 超时,线程再次循环到accept。如果有任何参数可以改变这一点,试试吧!

假设您正在使用boost线程类,您可以通过在boost线程中使用native_handle()句柄函数来更改线程优先级。下面是一个小例子:

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