c++ - 使用 Accept() 的 Boost 线程中的性能/优先级 (Linux)

标签 c++ linux multithreading sockets boost

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

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

最佳答案

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

  • 在系统调用中(您无法更改任何内容)或
  • 超时,线程正在循环以再次接受。如果 有任何参数可以改变这个,试试吧!

关于c++ - 使用 Accept() 的 Boost 线程中的性能/优先级 (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6733093/

相关文章:

linux - 如何监控大文件的哪一部分发生了变化

c++ - 多个变量的多个互斥体

java - OSGi 后台线程故障

c++ - OpenCV contourArea() 不工作

java - 无法将值从 Bash 脚本传递到 Java 程序

c++ - 如何在 C++ 中使交换功能更快?

python - 如何使用 Python 将自定义 linux stdout 粘贴到 JSON 中?

Spring Boot 应用程序只接受 6 个请求,为什么?

c++ - 声明现有原始指针所有权的正确方法

C++ 单元测试在运行所有测试时或在某个测试之后失败