我有一個升壓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個線程)創建自己的MasterClass
和myContainer
對象。我想要的是具有一個MasterClass
對象,該對象處理所有功能,並通過myDataOperator
和一個myContainer
針對所有線程完全控制容器。所以他們需要某種Singleton
或Global
我想,但我不知道該怎麼做。
據我搜查互聯網,我看到我需要某種synchronization
或locking
。那麼我怎樣才能讓MasterClass
和myContainer
全球(或單身)他們服務於所有的線程?
謝謝。
注:我使用Visal C++在Visual Studio 2008中的Win7的X64計算機
你已經回答了你的問題 - 你需要單身:) – Avt
但我覺得單身是不是這種類型的問題,最好的做法就是爲什麼我說:「某種辛格爾頓的」。有人說它不是線程安全的。 – user2955554
有幾種實現單例的方法。其中一些是線程安全的。 – Avt