Golang 插件热重载
Golang plugin hot reload
我正在尝试在 Golang 中重新加载一个插件,我使用的是 Go 1.8。我尝试再次打开插件,但没有用(打开打开一个 Go 插件。如果路径已经打开,则返回现有的 *Plugin。多个 goroutines 并发使用是安全的。 - Go Plugin open文档)。我想知道有什么方法可以在不重新运行服务器的情况下重新加载?
据我所知,这是不可能的,因为 go 无法卸载共享库。当在插件中创建一些对象,并从程序中引用它时,它不能进行垃圾收集。看到这个问题:https://github.com/golang/go/issues/11100
我正在尝试在 Golang 中重新加载一个插件,我使用的是 Go 1.8。我尝试再次打开插件,但没有用(打开打开一个 Go 插件。如果路径已经打开,则返回现有的 *Plugin。多个 goroutines 并发使用是安全的。 - Go Plugin open文档)。我想知道有什么方法可以在不重新运行服务器的情况下重新加载?
据我所知,这是不可能的,因为 go 无法卸载共享库。当在插件中创建一些对象,并从程序中引用它时,它不能进行垃圾收集。看到这个问题:https://github.com/golang/go/issues/11100