异步使用线程池
async uses a threadpool?
我是C++新手,我尝试使用 std::async 和 launch::async 来生成新线程来处理传入的 UDP 数据包。对于特定端口上的每个新请求,异步都会生成一个新线程来处理它。
在负载下,我发现 udp 数据包正在到达我,但异步生成线程并开始处理信息需要 10 秒以上。我想知道是否有底层线程池,这就是原因,异步被阻止并正在等待。如果是,如何增加此线程池的大小?
根据标准std::async
由于对线程本地存储的要求,无法使用线程池。但是,在实践中,MSVC 确实使用线程池,因为它的实现是在 PPL 之上构建的,它们只是忽略了线程本地存储的要求。其他实现将根据语言需要为每次调用std::async
启动一个新线程。
与以往一样,Bartosz在这个主题上有一篇出色的博客文章。
相关文章:
- 如何在C++上启动异步线程
- 使用 std::chrono::steady_clock 对线程/异步中的代码进行基准测试
- 调用boost.asio的异步函数时,线程是什么时候创建的
- 多个网络连接的线程与异步 I/O
- STD ::与指定线程的异步类似物
- 异步处理设备的高级线程用法
- 有没有办法为任何函数编写通用代码,以便它可以(异步)执行并从线程池中获得返回值?
- 异步记录器线程安全
- 异步是否总是在C++中使用另一个线程/内核/进程
- XAudio2 教程 - 单独的线程和异步读取?
- 使用多线程处理的异步请求
- C++ cv::Mat 返回向量的<rectangle>线程异步
- STD :: async的最大线程数量是多少,将异步创建和执行
- 发生哪些线程异步操作
- 如何实现多线程异步操作
- C++低延迟线程异步缓冲流(用于日志记录)–Boost
- QML是否与多线程/异步调用兼容
- c++的非线程异步IO简介
- 线程异步中断
- boost::asio多线程异步接受,带有阻塞读/写服务器