c++ - 如何为多线程应用程序制作全局对象

标签 c++ windows multithreading boost thread-safety

我有一个 boost multi_index 容器

typedef multi_index_container<
    myData, 
        indexed_by<    
            random_access<>,  // keep insertion order
            ordered_non_unique< member<myData, time_t, &myData::timestamp> >
        > 
> myContainerType;


class myDataOperator
{
    myContainerType myContainer;
    // some functions for inserting and searching myContainer 
}

还有另一个具有整个项目通用功能的类

class MasterClass
{
private:
    myDataOperator myOp;

public:
    // some general functionalities
    // some procedures using myContainer
}

还有两个类将使用 MasterClass 类的功能在线程中工作

class ThreadClass1
{
    private:
    MasterClass master;

    // some function calls of MasterClass with master
    // thread 1 internal functionalities
}

class ThreadClass2
{
    private:
    MasterClass master;

    // some function calls of MasterClass with master
    // thread 2 internal functionalities    
}

每当我运行项目时,每个线程(将有超过 6 个线程)创建自己的 MasterClassmyContainer 对象。我想要的是拥有一个 MasterClass 对象来处理所有功能并通过 myDataOperator 和一个 myContainer 为所有线程完全控制容器.所以他们需要某种SingletonGlobal 我猜,但我不知道该怎么做。

据我在互联网上搜索,我发现我需要某种同步锁定。那么我怎样才能使 MasterClassmyContainer 成为全局(或单例)服务于所有线程的地方呢?

谢谢。

注意:我在 Win7 x64 计算机上的 Visual Studio 2008 中使用 Visal C++

最佳答案

关于c++ - 如何为多线程应用程序制作全局对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21847828/

相关文章:

c++ - 在并行继承层次结构中由 parent 关联 child

c++ - Malloc 无法在 Windows 上分配 1 GiB 的内存

windows - 使用 Delphi 2007 从虚拟文件夹加载文件

c++ - 将 "this"指针转换为另一种类型不会违反严格的别名吗?

c++ - AVX2:分配给 __m256i 类成员时出现段错误

c++ - 将文件加载到 vector <char>

java - 使用Java访问windows-my时如何避免智能卡选择弹出窗口

python - PyQt GUI 在 Python 中多线程时卡住,直到线程完成

c# - 何时使用 Task.Run,​​何时使用 async-await 以及何时组合使用它们

java - invokeLater 未按预期工作(JButton 从未释放)