首页 > 解决方案 > 在多线程中运行的同一对象的多个实例,我如何防止所有线程更改全局变量?

问题描述

我有一个名为 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 库进行线程

标签: c++multithreadingconcurrencythread-safetypthreads

解决方案


推荐阅读