我已经使用标准的go库编写了一个golang Web应用程序。我有一个启动goroutine的API。
在goroutine中,我遍历有限的数据列表(约5000个单位),并处理每个条目。在处理每个条目时,我使用fmt.Println()
打印到终端,并使用time.Sleep(500 * time.Millisecond)
休眠。每次处理大约需要500毫秒。
我使用go build && ./app
之类的命令在Windows(Linux的Windows子系统)中的Ubuntu上启动go程序。
当我通过API调用启动goroutine时,可以在终端中看到打印内容。一段时间后,我注意到打印消息停止了,没有任何处理。我使用SELECT COUNT(*)...
检查数据库,因为每次处理都要记录一个数据库条目,并且计数没有变化。当我通过在终端中按 CTRL-C 终止程序时,该程序不会终止。取而代之的是,处理过程恢复了,我又开始在终端上看到打印内容。
有人知道为什么会这样吗?或者如何开始调试此问题?预先感谢。