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

时间:2011-07-18 12:47:01

标签: c++ linux multithreading sockets boost

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

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

2 个答案:

答案 0 :(得分:3)

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

  • 在系统调用中(您无法更改)或
  • 超时,线程再次循环到accept。如果 有任何参数可以改变这一点,试试吧!

答案 1 :(得分:1)

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

但首先我建议你确认你确实遇到了问题。无论如何,你关心的话题应该是有效的闲置。