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

时间:2014-02-18 08:19:19

标签: c++ windows multithreading boost thread-safety

我有一个提升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 ++

1 个答案:

答案 0 :(得分:0)