繁体   English   中英

当线程安全容器上有大量计算和推入/弹出操作时,是从boost asio更好地同步还是异步?

[英]Is better sync or async from boost asio when there is lot of calculation and push/pop on thread safe containers?

需要关于boost::asio建议,因为我是一个全新的人,并且有最后期限,所以我需要创建一个TCP服务器(大量连接),并且以文档中的聊天服务器示例为起点。

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

(我可以将计算放入新的异步中,但我想知道是否有更好的解决方案)

只需在单个线程上异步处理通信即可。 这应该允许每秒约1万次连接。 只是不要在此线程上执行任何缓慢的操作。 只需推入队列并屈服于通信服务即可。

现在,尽可能多地启动尽可能多的线程来完成CPU密集型工作(通常#逻辑核心,但有时#物理核心,当然,如果使通信吞吐量达到饱和(不太可能),则可能(#cores-1))。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM