【发布时间】:2017-02-15 13:57:21
【问题描述】:
我是 Go 新手。假设我有一个服务器正在监听 HTTP 请求,同时我需要检查 Redis 通知以便更新数据。下面是一个例子:
func checkExpire() {
for {
switch msg := pubSubConn.Receive().(type) {
case redis.Message:
...
}
}
server.ListenAndServe()
简单地将checkExpire 放入 goroutine 是一个好的解决方案吗?
go func() {
for {
switch msg := pubSubConn.Receive().(type) {
case redis.Message:
...
}
}()
【问题讨论】:
-
为什么不呢?应该没问题。
-
我不确定你在问什么,goroutines 是你在 Go 中同时运行某些东西的方式。你还会做什么?
-
请注意,goroutines 不会阻止主进程退出。您可能需要在 main() 的末尾使用
for {}阻止。 edit 实际上 server.ListenAndServe 应该阻塞 -
@Plato 对不起,我应该把
ListenAndServe放在checkExpire的下面。