同一个DLL能同时被不同程序调用,那DLL中的变量函数等会发生冲突吗?比如:两个程序都在同时调用DLL中的同一个函数或同一个变量,这个时候有冲突吗?都说各个程序调用同一个DLL的时候,都各自有自己的一份DLL的拷贝,所以不会发生冲突。如果真是这样,那假设换成这样的情况:一个程序里面多个线程调用同一个DLL的同一个函数时,那各个线程还有各自的DLL的拷贝吗??这个时候是不是会发生冲突?
刚接触多线程,对线程的协调同步问题感觉很烦,所以有了这个疑问。
如果多线程中各自有自己的DLL拷贝,那也就不用考虑同步问题了。
呵呵,见笑了。
偶是个懒人,才有这样可笑的想法。知道问题答案的兄弟,请简单回答一下吧。
谢谢
刚接触多线程,对线程的协调同步问题感觉很烦,所以有了这个疑问。
如果多线程中各自有自己的DLL拷贝,那也就不用考虑同步问题了。
呵呵,见笑了。
偶是个懒人,才有这样可笑的想法。知道问题答案的兄弟,请简单回答一下吧。
谢谢
解决方案 »
- 有win64吗
- 如何实现毛笔功能?
- 图像二值化得相关算法
- EnumProcesses(),编译的时候提示找不到Psapi.h??????
- 怎么检索一行所有的字段?
- 有用ADSL的上海朋友吗?初装一般花费多少,有那些东东?
- RTP协议能用来发控制数据吗?
- 有用过BoundChecker的各位大侠,请看下面的错误,是用BoundChecker编译的,给小弟解释一下,不胜感激。
- 救人那!!!!————打印预览的问题
- VC使用ADO存储图片到 MYSQL数据库 !!问了N多高手了!!!!!!!!!!!!
- 非模式对话框中的TreeCtrl无法显示节点
- 请问像联众游戏这样有很多游戏服务器,请问他们操作数据库是这样操作的?是每个服务器都有一个数据库,还是怎样的?
如果变量是全局变量,那么将导致混乱。
同一个进程的多个线程调用DLL中的同一个函数,如果该函数是可重入的,则不需做同步。如果不是可重入的,如访问了DLL中的全局变量,则需在进程中做同步。
多个程序调用同一个DLL,系统的内存中只有一份该DLL的COPY,系统根据引用记数来确定是否从内存中删除该COPY
同一个进程的多个线程调用DLL中的同一个函数,如果该函数是可重入的,则不需做同步。如果不是可重入的,如访问了DLL中的全局变量,则需在进程中做同步。
严重同意
dll如果有共享数据,如 #prama data_seg("mydata")
...
#prama data_seg()
mydata共享数据段的数据是所有进程共享的,需要同步的
其它的没事
No,即使是普通的全局变量,也要同步的。dll的函数这个最简单,是整个系统维持一份拷贝。
pragma dataseg的数据也是整个系统维持一份拷贝。
但dll中的全局变量是每个调用进程维持一个拷贝。因此,如果在同一进程中多个线程访问这个全局变量,那么当然要产生冒险