多线程和oop
Multithreading and oop
我正在处理一个使用两个不同线程(th1
和th2
)的项目。它们通过extern
关键字共享多个对象和变量。它们是全局对象和全局变量
类似于:
extern Obj1 *obj1;
在我看来:
- 在不同线程中调用一组obj1
- 在不同线程中设置obj1的值
- 大量使用全局布尔变量,如信号量
这不是一种安全的编程方式,但我想有一些参考资料来证明它,比如一些不鼓励它的论文或书籍。有人能澄清吗?我假设一个x86平台正在与visualstudioc++一起使用。
规则很简单:如果任何线程修改对象(包括"对象"(如双精度或指针),以及多个线程访问它,则所有访问都必须受到保护。这是定义在C++11标准中,该标准基本上重述了适用于Posix的规则(据我所知Windows)。
除此之外,什么是安全的取决于你在做什么。在我的例如,我发现自己的代码很少需要非常常量全局对象;日志记录是唯一的例外(甚至在那里,大多数对象将是线程本地的,只有实际将日志消息刷新到时使用的共享对象其最终目的地)。大多数对象都是本地对象,或者动态分配,并且很少在螺纹。
相关文章:
- 在C++中使用cURL和多线程
- 多线程双缓冲区
- 为什么我的多线程作业队列崩溃
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 为什么一个向量上的多线程操作很慢
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 全局变量 多读取器 一个写入器多线程安全?
- boost::文件系统::recursive_directory_iterator多线程安全
- 如何阻止TensorFlow的多线程
- 如何在多线程中正确使用unique_ptr进行多态性?
- 并发/多线程:是否可以以这种方式生成相同的输出?
- sigwait() 在多线程程序中不起作用
- 多线程程序中出现意外的内存泄漏
- 静态 constexpr 类成员变量对多线程读取是否安全?
- 多线程比没有线程C++慢
- 具有 C++11 多线程的特征库
- 通过安装信号处理程序关闭多线程应用程序
- 成员变量在多线程 C++ 时自行更改
- 多线程和oop