【发布时间】:2014-01-05 01:59:26
【问题描述】:
根据 Go 规范:
“表示在顶层(任何函数之外)声明的常量、类型、变量或函数(但不是方法)的标识符的范围是包块。”
包块变量是线程安全的吗?例如。如果我有一个包块变量来存储 Web 应用程序的当前用户:
var CurrentUser *string
请求 1 进来:将 CurrentUser 设置为“John” 请求 2 进来:将 CurrentUser 设置为“Fred”
在请求 1 中,CurrentUser 的值是多少?
【问题讨论】:
-
线程安全通常用于表示并行读取或写入不会造成恶作剧。但我认为您要求的是 goroutine-local 状态。对吗?
-
是的。我认为这与 Go 例程在幕后使用线程或多或少是一样的
标签: go