【发布时间】:2011-01-30 07:13:41
【问题描述】:
我有一个包含许多实例的 C++ 类,我想让我的应用程序线程安全。 这个类有一个成员和一个处理它的函数,例如:
class MyCls {
int x;
void f() { x++; }
};
我需要保护这个成员,所以据我所知,我有两个选择:
- 添加全局临界区和 在触摸此成员之前输入它。
- 向类添加关键部分 所以每个实例都会保护自己的成员。
这两种解决方案都是大材小用:
- 根本不应同步两个不同的实例。
- 操作系统应该处理数以百万计的关键部分,其中实际上很少有冲突。
我可以使用其他解决方案或多线程设计模式吗?
【问题讨论】:
-
有些锁根本不需要任何特殊的初始化,只在线程阻塞时消耗资源。例如,这是微软的:msdn.microsoft.com/en-us/library/aa904937.aspx
-
请使用 4 个缩进来格式化代码。
-
为什么在这个问题上使用 C 标签?
标签: c++ c multithreading concurrency