boost :: asio :: io_service的concurrency_hint是什么意思?

时间:2016-11-27 12:50:03

标签: c++ multithreading boost boost-asio

来自angular-bootstrap typeahead

  

io_service对象(       std :: size_t concurrency_hint);
  构造一个关于所需并发级别的提示。

     

参数

     

concurrency_hint对实现的建议有多少   它应该允许同时运行的线程。

这是什么意思'对实施的建议'?

如果我使用' 2'构建对象,它可能只启动1个线程吗? 如果我有一个带有4个内核的CPU,我使用' 4'或' 5'来构造对象。会发生什么?

1 个答案:

答案 0 :(得分:4)

并发提示允许底层实现根据应运行io_service的并发线程数量做出选择。例如:

  • 对于I / O完成端口,它设置完成端口的最大并发级别。并发提示作为NumberOfConcurrentThreads的{​​{1}}参数提供。有关详细信息,请参阅I/O Completion Ports文档:

      

    此值限制与完成端口关联的可运行线程的数量。当与完成端口关联的可运行线程的总数达到并发值时,系统会阻止与该完成端口关联的任何后续线程的执行,直到可运行线程的数量降至并发值以下。

  • 设置为1时,优化实现以避免不必要的锁定。 Revision History注释:

      

    在单线程用例中使用线程本地操作队列(即当CreateIoCompletionPort()为1时)以消除锁定/解锁对。