我是C ++的新手,我尝试将std :: async与launch :: async结合使用以产生新线程来处理传入的UDP数据包。对于特定端口上的每个新请求,异步都会产生一个新线程来处理它。
在负载下,我发现udp数据包已到达我的手中,但异步需要10秒钟以上的时间才能生成线程并开始处理信息。我想知道是否存在底层线程池,这就是原因,异步被阻塞并在等待。如果是,如何增加该线程池的大小?
根据标准,std::async
由于对线程本地存储的要求,无法使用线程池。但是实际上,MSVC确实使用线程池,因为它的实现是基于PPL构建的,它们只是忽略了对线程本地存储的要求。其他实现将std::async
根据语言要求针对每个调用启动一个新线程。
一如既往,Bartosz在此主题上有出色的博客文章。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句