涉及单独进程的原子操作
Atomic operation involving separate processes
我正在构建两个 .NET 应用程序,它们需要在本地共享一个计数器资源。我正在寻找一种方法来自动增加或减少每个应用程序的计数器。
如果我在单个多线程应用程序中执行此操作,我将简单地使用 System.Threading.Interlocked.Increment
和 System.Threading.Interlocked.Decrement
重载之一和共享计数器变量。
我的应用程序将无法访问数据库,因此我无法使用 DBMS 锁定机制。理想情况下,我想使用注册表 REG_DWORD
值,但我想不出一种方法来自动增加或减少它。我还考虑过有一个文件系统文件夹,其中 "incrementing" 将一个唯一命名的文件放在该文件夹中,而 "decrementing" 正在删除一个文件,但这似乎有点笨重或麻烦。
有人知道解决这个问题的好方法吗?
您可以使用共享 Mutex
在多个进程之间进行同步。
这允许您 "lock" 并在访问注册表的代码周围提供保护,如果这是您选择使用的共享存储机制。
我正在构建两个 .NET 应用程序,它们需要在本地共享一个计数器资源。我正在寻找一种方法来自动增加或减少每个应用程序的计数器。
如果我在单个多线程应用程序中执行此操作,我将简单地使用 System.Threading.Interlocked.Increment
和 System.Threading.Interlocked.Decrement
重载之一和共享计数器变量。
我的应用程序将无法访问数据库,因此我无法使用 DBMS 锁定机制。理想情况下,我想使用注册表 REG_DWORD
值,但我想不出一种方法来自动增加或减少它。我还考虑过有一个文件系统文件夹,其中 "incrementing" 将一个唯一命名的文件放在该文件夹中,而 "decrementing" 正在删除一个文件,但这似乎有点笨重或麻烦。
有人知道解决这个问题的好方法吗?
您可以使用共享 Mutex
在多个进程之间进行同步。
这允许您 "lock" 并在访问注册表的代码周围提供保护,如果这是您选择使用的共享存储机制。