这个模型需要互斥锁吗?

v1A*_*xvw 2 c++ mutex pthreads race-condition stdvector

我正在设计一个带有服务器的程序,让两个客户端进行通信.有一个客户端执行命令,另一个客户端执行命令.

为了使这项工作,我有两个线程:一个用于受控客户端的线程,另一个用于控制器客户端.

受控客户端始终保持连接,具有包含任务的向量,并在添加任务时执行这些任务.它有一个无限的while循环,当连接关闭时它会停止.

控制器 - 客户端将任务添加到向量.

现在因为在两个线程之间共享一个向量,可能会出现竞争条件,但由于一个线程只添加对象而另一个只弹出对象,这是必要的吗?我试图用这个问题制作一个流程图,但也许不清楚.我真的不知道如何创建流程图: 在此输入图像描述

我正在使用std::vector <CustomClass>C++实现这一点.

提前谢谢,
ief2

编辑:附加问题:vector.size()呼叫需要互斥吗?

Eri*_*rik 7

是的,这需要一个互斥锁.

vector.pop_front()并且vector.push_back()在同一时间执行会产生各种各样的混乱 - 假设非标准vector.pop_front()符合名称的含义.

旁注:使用队列或列表而不是向量