You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows平台C++下DLL静态变量是否在多线程间共享?

结论:DLL中的静态变量X在所有线程间共享

在Windows系统的C++环境下,你的场景里静态变量X确实是所有线程共享的,原因如下:

  • 同一个进程内的所有线程共享进程的地址空间。当主应用程序加载myDll.dll后,DLL的代码段和数据段(包含静态变量X)会被映射到该进程的内存空间中,进程内的所有线程都能访问这块内存区域。
  • C++中,全局/static修饰的变量在进程范围内仅存在一个实例。你观察到所有线程打印的X地址完全相同,这直接证明了所有线程访问的是同一块内存。

需要注意的是:

  • 如果是不同进程加载同一个myDll.dll,每个进程会拥有独立的X副本,但你的场景是同一进程下的多线程,所以不存在这种情况。
  • 多线程并发访问共享的静态变量X时,必须添加同步机制(比如临界区CRITICAL_SECTION、互斥量Mutex等),否则会出现竞态条件,导致数据损坏或逻辑错误。

内容的提问来源于stack exchange,提问作者MrMartins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 22:14:51