多个进程调用同一个静态库的问题
是这样的,这个需求可能有点奇怪,
比如说有俩个进程A和B,他们使用了同一个静态库,
比如说Test.lib,在Test.lib里有一个变量,定义为int inumber = 0(这里的类型定义为static或全局都是没用的);
需求是这样的,比如说A进程加载了Test.lib,将inumber的值修改为5;
哪么当B进程加载Test.lib时,获取到inumber的值是A进程修改之后的值,但现在是达不到这个需求的,目前只考虑到了内存共享的法子,不知道还有没有其它的解决方法。
路过的有没有什么好的想法,写文件之类的就算了,这涉及到效率问题。 类 库 内存
[解决办法]
静态库*.lib是编译到程序代码中的,两个程序使用同一个静态库文件进行编译后,在各自生产的可执行文件时独立的两端代码与数据,自然,使用两个可执行文件启动的进程也是相互独立的,不会相互影响。
真正需要在进程间注意公用数据的通常来讲是所谓的IPC,比如“共享内存”什么的。
[解决办法]
除了进程间通信,貌似没有好方法。
剪贴板,管道,共享内存都可以啊
[解决办法]
信号量应该是可以做到的, B阻塞等待信号量sem, A修改完变量之后通知sem, 这时B阻塞结束.
典型的线程同步.
[解决办法]
通信吧!不通信两个独立的东西应该是不能修改的!
静态库是在生成可执行文件的时候已经加载进去了的!
[解决办法]
楼主搞错了静态库和静态链接库的概念,自己有空找找找资料学习下吧,就不说这个了。
说下你的需求。
你的需求用动态库可以实现。
只要在动态库中这样做就可以了。
#pragma data_seg("DLLSharedSection") // 声明一个共享数据段,参数为共享数据段段名
int SharedData1 = 123; // 初始化共享数据值
.............
.............
int SharedDataN = 123;
#pragma data_seg()
#pragma comment(linker,"/section:.DLLSharedSection,rws") //设置此段段属性