1 DLL与进程,线程之间的关系 DLL模块被映射到调用的他的进程的虚拟地址空间。DLL使用的内存从调用进程的虚拟地址空间分配,只能被该进程的线程所访问。DLL的句柄可以被调用进程使用,同时调用进程的句柄可以被DLL使用。DLL使用调用进程的栈。 2 关于共享数据段 DLL定义的全局变量可以被调用进程访问;DLL可以访问调用进程的全局数据。 使用同一个DLL的每一个进程都有一个自己的DLL全局变量实例。如果一个进程的多个线程访问同一变量,则需要使用同步机制; 对一个DLL的变量,如果希望每个使用DLL的线程都有自己的不同值,则应该使用线程局部存储TLS, Thread Local Storage。 在程序里加入预编译指令,或在开发环境的项目设置里也可以达到设置数据段属性的目的,必须给这些变量赋初值,否则编译器会把没有赋初值得变量放在一个叫做未被初始化的数据段中。
|
|