Jas*_*ver 17 registry winapi multithreading synchronization
如果我有两个进程访问给定的注册表项(例如HKLM),我应该将逻辑包装在互斥锁中吗?
i_a*_*orf 21
注册表将确保操作是原子操作,因此您不必自己同步.
但是,如果您有多个进程/线程同时访问注册表,它不会保证首先发生哪些情况.只有你不会得到乱码数据.
编辑:进一步阅读,请参阅无法锁定注册表中的某人是一项功能,而不是一个错误.
正如其他人所提到的,单个操作是原子的。如果您需要使更大的一组操作原子化,并且您的目标是 Vista 或更高版本,则可以使用 Vista 中添加的事务注册表支持。
不幸的是,没有直接的托管支持,因此您需要创建包装器。http://community.bartdesmet.net/blogs/bart/archive/2006/12/14/Windows-Vista-2D00 -Introducing -TxR-in-C_2300_-_2800_Part-1_2900_.aspx展示了如何 P/Invoke 这些方法。