如果我有两个进程访问一个给定的注册表键(例如HKLM
),那么我是否应该在代码中使用互斥锁?
如果我有两个进程访问一个给定的注册表键(例如HKLM
),那么我是否应该在代码中使用互斥锁?
注册表会确保操作是原子性的,因此您无需自己同步。
但是,如果您有多个进程/线程同时访问注册表,则不能保证哪个先发生。 只能确保不会出现乱码数据。
编辑:更多阅读,请参见“无法锁定注册表不是错误,而是功能”。
快速阅读一下 Raymond Chen 的这篇文章。它解释了针对注册表的单个写入和读取是原子性的。然而,其他锁定取决于您,因为没有办法独占地保持一个键打开。
https://devblogs.microsoft.com/oldnewthing/20090326-00/?p=18703
这取决于你要传达什么信息以及信息的时间紧迫程度。例如,假设你有一个应用程序正在执行工作并将状态结果写入注册表键,另一个应用程序正在读取该状态并在屏幕上显示它。在这种情况下,我不会费心使用互斥锁,因为读者总是会得到一个“有意义”的值。我认为你所问的实际上是并发设计的基本问题。