我有一個簡單的測試項目,預計在運行時打印 goroutine 調度消息。從 Goland 配置中設置 env 是有效的。但它不是來自下面的代碼,該應用程序不會打印日程安排信息。有人解釋一下發生了什么嗎?func TestScheduler1() { var wg sync.WaitGroup wg.Add(10) for i := 0; i < 10; i++ { go work(&wg) } wg.Wait() // Wait to see the global run queue deplete. time.Sleep(3 * time.Second)}func work(wg *sync.WaitGroup) { time.Sleep(time.Second) var counter int for i := 0; i < 1e10; i++ { counter++ } wg.Done()}初始化函數如下: func init() { os.Setenv("GOMAXPROCS", "1") os.Setenv("GODEBUG", os.Getenv("GODEBUG") + "schedtrace=1000,scheddetail=1")}
1 回答

莫回無
TA貢獻1865條經驗 獲得超7個贊
go
命令文檔提到go
檢查一些環境變量:
go 命令及其調用的工具檢查一些不同的環境變量。
因此,環境變量在程序啟動之前(即構建時)進行檢查。當您從代碼中設置這些變量時,程序已經運行。
它可以在 IDE 中運行,因為變量是在編譯之前應用的,因此代碼運行時會包含您需要的所有更改。
- 1 回答
- 0 關注
- 231 瀏覽
添加回答
舉報
0/150
提交
取消