Dll 多线程变量传递,临界区?
问题描述:
两个dll, dll 1,dll 2;dll 1有一个导出函数AB;
dll 1实现对AB函数中的变量赋值;然后dll2中导入函数AB,并获取这些变量值。
函数调用运行ok.
但是: 当dll1中加入文件File的读取操作时,函数AB在dll2中运行不正确,这些变量值都是0(很奇怪)。
dll 1中不加入文件File的读取操作时,dll2中运行正常。
我的一些怀疑,有两种可能情形,也不知道对不对:
1. 当dll 1读取File文件时,可能耗时比较耗时,可能有进程处理dll1(对函数AB及变量进行赋值);同时,另外一个进程处理dll 2,导致多线程安全、冲突的问题。
2. 由于dll 1比较耗时(读取文件),dll2在调用函数AB时,导致超时?所以那些变量都从缓存中调用了(因为所有变量值为0)
考虑用临界区来保证多线程调用安全,但是这两个dll如何用临界区来实现?还是有其他更好的方法。这两个dll都不是main函数.
试过全局数组来传递 共享这些变量,也是同样的问题。