C++ 在线程安全容器上有大量计算和push/pop时,boostasio的同步还是异步更好?

C++ 在线程安全容器上有大量计算和push/pop时,boostasio的同步还是异步更好?,c++,c++11,boost,boost-asio,C++,C++11,Boost,Boost Asio,需要关于boost::asio的建议因为我是全新的,而且很快就要到最后期限了,所以我需要创建一个TCP服务器(很多连接),并使用文档中的作为起点 当我收到一条消息时,我需要进行大量的计算,我需要推入线程安全队列(锁保护互斥)。除了写和读之外,所有的计算都在主线程中进行(回调在哪里执行?)。为此,我是否需要将同步与大量线程放在一起,或者是否有任何规则可以使异步与大量计算更快 (我可以使用新的异步方式进行计算,但我想知道是否有更好的解决方案)只需在单个线程上异步处理通信即可。这应允许每秒最多10k的

需要关于
boost::asio的建议因为我是全新的,而且很快就要到最后期限了,所以我需要创建一个TCP服务器(很多连接),并使用文档中的作为起点

当我收到一条消息时,我需要进行大量的计算,我需要推入线程安全队列(锁保护互斥)。除了写和读之外,所有的计算都在主线程中进行(回调在哪里执行?)。为此,我是否需要将同步与大量线程放在一起,或者是否有任何规则可以使异步与大量计算更快


(我可以使用新的异步方式进行计算,但我想知道是否有更好的解决方案)

只需在单个线程上异步处理通信即可。这应允许每秒最多10k的连接。只需不要在此线程上执行任何缓慢的操作。只需推到队列上,并向通信服务屈服即可

现在,启动尽可能多的线程,以有效地完成CPU密集型工作(通常是逻辑核,但有时是物理核,如果通信吞吐量饱和(不太可能),则可能(#核-1))

如果您预计IO端将饱和,并且即使在互斥锁上也无法承受阻塞,请使用无锁队列。在这种情况下,一定要使用维度(#cores-1)worker,因为worker自然会在一个紧密的循环中旋转,等待队列上的消息,如果不采取预防措施,会窒息IO线程