c++ - 在多线程中运行的同一对象的多个实例,我如何防止所有线程更改全局变量?
问题描述
我有一个名为 myConsumer 的类,它有一个函数 getDataFromBuffer()。我从我的类中创建了对象 consumer1、consumer2、consumer3 的多个实例。每个消费者对象同时在不同的线程中运行。一切都还好,直到这里。但我想补充一点。我有一个名为 MyGlob 的全局变量,我想将其值加一,此时 consumer1 使用了 getDataFromBuffer() 函数。而且我不想更改其他线程的 MyGlob 变量。如何防止别人改变我的价值?
我总结了我的问题:
int MyGlob;
class myConsumer
{
public:
void getDataFromBuffer();
}
void myConsumer::getDataFromBuffer(){
if(this function is used by consumer1 )
myGlob++;
}
我在 windows 和 eclipse cdt 上使用 pthread 库进行线程
解决方案
推荐阅读
- php - 有没有办法像 javascript 一样输出函数的代码?
- mysql - 使用mysql从同一个表中获取和验证数据的存储过程
- javascript - 获取每个位置的 10 条最新评论
- forward - 神经网络 - 前向传播
- python-3.x - 当我尝试使用 Base64 解码字符串时。控制台显示“不能为 1 大于 4 的倍数”
- apache-kafka - 融合模式注册表`UnknownTopicOrPartitionException:此服务器不托管此主题分区。`
- c - asmlinkage 在 Linux 代码中定义为空
- oracle - 为什么我与 Oracle 服务器的 Power BI 连接只显示空表?
- mysql - 如何在 mySQL 中的 Case 表达式中放置 IF 语句?
- tibco - 如何在 Tibco 数据虚拟化中拆分数字和字符串