- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
库1[dll]
{
A级
{
静态int i=0;
}
}
Program1[exe] 引用了 Lib1
{
B类
{
主要的()
{
A.i = 5;
}
}
}
Program2 [exe] 引用了 Lib1
{
C类
{
主要的()
{
A.i = 5;
}
}
}
如果 Program1 和 Program2 同时执行,它们是否有可能引用 Lib1 的单个实例并且对 Program1 中 A.i 的静态变量所做的更改对 Program2 可用,反之亦然,
最佳答案
一般来说,不,您要求的内容是不可能的或不推荐的。在大多数操作系统(Windows、Linux 等)中,每个程序实例都在与所有其他进程隔离的单独进程地址空间中运行。在某些情况下,共享 DLL 的只读可执行代码可能会在进程之间共享以减少整体内存消耗,但可写数据是每个进程本地的。
您可以通过使用 OS 服务显式设置可由多个进程访问的共享内存区域来实现您的要求。在 Windows 中,这可以通过创建 named shared memory objects 来完成。 ,使用所有参与者事先知道的名称。然后,您可以将该内存块类型转换为结构类型并在该内存区域中读取和写入字段,并且所有对该共享内存具有 View 的进程都将看到相同的数据。
由于多个进程同时运行,您还需要考虑如何更新共享内存区域中的数据。如果多个进程需要更新共享内存区域中的计数器字段或其他内容,那么您需要围绕该数据的读取和写入实现线程安全实践,例如互锁增量或使用命名互斥对象作为独占访问锁。
关于dll - 在多个进程中加载相同的 dll 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5995790/
我是一名优秀的程序员,十分优秀!