我有一个 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 个线程)创建自己的 MasterClass
和 myContainer
对象。我想要的是拥有一个 MasterClass
对象来处理所有功能并通过 myDataOperator
和一个 myContainer
为所有线程完全控制容器.所以他们需要某种Singleton
或 Global
我猜,但我不知道该怎么做。
据我在互联网上搜索,我发现我需要某种同步
或锁定
。那么我怎样才能使 MasterClass
和 myContainer
成为全局(或单例)服务于所有线程的地方呢?
谢谢。
注意:我在 Win7 x64 计算机上的 Visual Studio 2008 中使用 Visal C++
最佳答案
我认为你在这里需要线程安全的单例。
http://www.nuonsoft.com/blog/2012/10/21/implementing-a-thread-safe-singleton-with-c11/
关于c++ - 如何为多线程应用程序制作全局对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21847828/