使用accept()的Boost线程的性能/优先级(Linux)
Performance/priority in Boost thread with accept() (Linux)
我实现了一个c++类,它启动一个单独的线程接受连接(与boost::asio
)。整个类旨在成为更大程序的异步"命令接收器"。
主要的问题是:当等待传入的连接时,线程基本上是空闲的。我的看法是,什么都不做是在浪费处理器时间(和硬件线程)。是否有任何方法以较低的优先级执行线程,或者有其他方法使线程不干扰主程序,这是任务密集型和线程?
如果您或您使用的类正在执行accept
调用,则线程被阻塞并等待操作系统做一些事情。所以线程(应该)不消耗任何CPU资源,如果它这样做,它是
- 在系统调用内(你不能改变什么)或
- 超时,线程再次循环到
accept
。如果有任何参数可以改变这一点,试试吧!
假设您正在使用boost线程类,您可以通过在boost线程中使用native_handle()句柄函数来更改线程优先级。下面是一个小例子:
但首先我建议你确认你真的有问题。无论如何,您所关心的线程应该是有效空闲的。
相关文章:
- 在C++/Linux中设置单调时钟的一些技巧
- Linux的Cpp上的计时器
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如何在linux终端中同时编译和运行c++代码
- 在Linux for Windows上编译C++代码时出错
- 如何找到锁定Linux futex的C++行
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 按对象的特定方法按升序排列的C++优先级队列
- 使用2个键的cpp-stl::优先级队列排序不正确
- 在linux上调试巨大的C++项目
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- c++方法参数只能在linux的发布模式下自行更改
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- 这里在 Linux 中具有"CreatePipe"和"CreateProcessW"功能吗?
- Linux 上 pthread 互斥锁的默认优先级继承策略
- 如何通过C/C 设置Linux中的IRQ优先级
- 检查Linux功能以设置线程优先级
- 当多个高优先级线程在多个内核上运行时,Linux内核没有响应
- 使用accept()的Boost线程的性能/优先级(Linux)