2014-02-18 69 views
1

我有一個升壓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  
} 

Wh每當我運行該項目時,每個線程(將會有超過6個線程)創建自己的MasterClassmyContainer對象。我想要的是具有一個MasterClass對象,該對象處理所有功能,並通過myDataOperator和一個myContainer針對所有線程完全控制容器。所以他們需要某種SingletonGlobal我想,但我不知道該怎麼做。

據我搜查互聯網,我看到我需要某種synchronizationlocking。那麼我怎樣才能讓MasterClassmyContainer全球(或單身)他們服務於所有的線程?

謝謝。

注:我使用Visal C++在Visual Studio 2008中的Win7的X64計算機

+0

你已經回答了你的問題 - 你需要單身:) – Avt

+0

但我覺得單身是不是這種類型的問題,最好的做法就是爲什麼我說:「某種辛格爾頓的」。有人說它不是線程安全的。 – user2955554

+0

有幾種實現單例的方法。其中一些是線程安全的。 – Avt

回答