使用boost strand和std :: mutex

问题描述 投票:0回答:1

跟进这个site

文章HTTP服务器3

他们使用stand来保证这些处理程序不会同时执行。

所以,我有3个线程调用io_context.run()并导致它们进入通道,可能必须同时使用vector的push_back。

我是否必须使用std :: mutex锁定push_back函数以防止它们同时调用或者由strand管理好?

c++ c++11 boost boost-asio
1个回答
1
投票

假设您的所有代码都在strand中正确运行,那么一次只有一个线程将执行您的代码。

正在执行代码的线程将在可用的三个线程之间进行更改,但一次只能执行一个函数。

因此,您不应该需要互斥体,这是使用strands的想法的一部分,因为互斥体很难在异步代码中正确使用。

© www.soinside.com 2019 - 2024. All rights reserved.