几个月前,我遇到了一个人(在 orkut 上)提出的这个有趣的场景。虽然,我已经为这个问题提出了一个“非便携式”解决方案(已经用小代码测试过),但仍然想知道你们要说什么和建议什么。
假设,我为单线程客户端创建了一个 DLL,导出了一些用 C++ 编写的功能。该 DLL 声明了许多全局变量,一些可能是 const 变量(只读),而另一些则是可修改的。
无论如何,后来事情发生了变化,现在我希望同一个 DLL 与多线程应用程序一起工作(无需修改 DLL);这意味着,多个线程从 DLL 访问函数和全局变量,并修改它们......等等。所有这些都可能导致全局变量持有不一致的值。
所以问题是,
我们是否可以在客户端代码中做一些事情来防止 DLL 的多访问,同时确保每个线程在它自己的上下文中运行(意思是,当它访问 DLL 时,DLL 的全局值与那是以前)?