如何为多线程应用程序创建全局对象

How to make global objects for multithreaded applications

本文关键字:创建 全局 对象 应用程序 多线程      更新时间:2023-10-16

我有一个提升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,但我不知道该怎么做。

就我搜索互联网而言,我发现我需要某种synchronizationlocking。那么,如何使MasterClassmyContainer成为全局(或单例),它们为所有线程提供服务呢?

谢谢。

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

我认为这里需要线程安全的单例。

http://www.nuonsoft.com/blog/2012/10/21/implementing-a-thread-safe-singleton-with-c11/