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

.NET 5(隔离模式)Azure Functions静态全局变量并发修改影响咨询

结论

你提到的情况不是极小概率事件,只要在同一个宿主进程实例内,是100%会发生的:前一个端点修改的静态全局变量值,一定会被紧随其后执行的同进程内的其他端点读到。

原理说明

你当前使用的是.NET 5+ 对应Azure Functions的隔离工作进程模型,Program.cs中初始化的宿主会在进程存活的全生命周期内,处理所有收到的函数触发请求,无论请求是并行执行还是串行执行,都运行在同一个进程空间中:

  • 静态变量的生命周期和进程/AppDomain绑定,只要宿主没有重启、没有触发冷启动拉起新的进程实例,所有请求读写的都是同一块内存地址的静态变量。只要前一个请求完成了对静态变量的修改,后续同进程内的所有请求都会拿到修改后的值。
  • 只有当函数触发冷启动,平台新拉起一个独立的宿主进程处理请求时,新进程的静态变量才会重新初始化,和原有进程的静态变量互不影响,但新进程内部的所有请求依然共享该进程内的静态变量。

开发建议

如果你的静态变量需要支持运行时修改,一定要增加线程安全控制,避免并发读写时出现竞态条件、值异常的问题。如果业务场景允许,更推荐通过依赖注入注册单例服务来替代全局静态变量,更便于做生命周期管理和线程安全处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:48:01