如何为多线程应用程序创建全局对象
How to make global objects for multithreaded applications
我有一个提升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
,但我不知道该怎么做。
就我搜索互联网而言,我发现我需要某种synchronization
或locking
。那么,如何使MasterClass
和myContainer
成为全局(或单例),它们为所有线程提供服务呢?
谢谢。
注意:我在 Win7 x64 计算机上使用 Visual Studio 2008 中的 Visal C++
我认为这里需要线程安全的单例。
http://www.nuonsoft.com/blog/2012/10/21/implementing-a-thread-safe-singleton-with-c11/
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何创建一个空的全局类并在启动时实例化它
- 为队列创建C 全局变量
- 如何在C++中创建"全局"实例?
- 如何在 C++ 中创建全局向量
- 如何为多线程应用程序创建全局对象
- C++如何创建"全局"库
- 我是否可以在类似于 C# 的 C++ 中创建全局命名空间层次结构,以帮助开发人员使用我们的代码?
- 如何在cuda上创建全局可访问的变量
- 创建全局常量C字符串的正确方法
- 在 llvm 中创建全局变量时出错
- 如何创建全局处理 Win+<some 键>组合的应用?
- 在函数C++中创建全局变量
- 如何为所有类型的整数值类型创建全局类型,并在C++中了解它们的类型
- 从C++源文件创建全局变量列表
- 使用LLVM IR Builder创建全局矢量
- 使用名称空间创建全局函数,但得到多个定义的符号错误
- 在函数内部创建全局动态数组
- 使用它来创建全局钩子时,我应该在 DLL 中放入什么