我需要创建一组可供整个计算机上的任何进程访问的变量。要求是流程之间的沟通。这也可以只是一个需要反序列化的字符串。如何创建系统范围变量?
这似乎是一个相当简单的问题。我已经看过Mutex
和Semaphore
,但是如果我没有弄错的话,这些类似乎是线程同步的。
除了创建文件或注册表项之外,是否有内置的int功能来执行此操作?
我需要创建一组可供整个计算机上的任何进程访问的变量。要求是流程之间的沟通。这也可以只是一个需要反序列化的字符串。如何创建系统范围变量?
这似乎是一个相当简单的问题。我已经看过Mutex
和Semaphore
,但是如果我没有弄错的话,这些类似乎是线程同步的。
除了创建文件或注册表项之外,是否有内置的int功能来执行此操作?
A mutex
可用于跨多个进程。
您与
new Mutex(true, "theMutex");
创建它,并可以通过使用
new Mutex(false, "theMutex");
将字符串INT的构造是用于互斥的系统宽标识符从其它进程访问它。您只能在创建它的一个进程中设置第一个参数为true。
(至少这就是我今天在讲座中学到的)
我已研究过互斥锁,它似乎我喜欢他们只是为了线程同步,而不是传递数据。或者有没有一种方法可以将实际的字符串传递给另一个进程? – bytecode77
是的,我的坏。我在MSDN上找到了这个:[Interprocess Communications](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365574(v=vs.85).aspx) – Nefrin
我经常使用内存缓存产品来解决这种需求。 Memcached(旧解决方案)或类似产品的榛子会解决您的问题。除此之外,您可以使用.Net创建管道,但在并发性方面存在错误。 –
我想为此避免第三方库。 – bytecode77
然后我的建议是使用管道:https://msdn.microsoft.com/en-us/library/bb546085(v=vs.110).aspx –