我要做的是创建一个自定义
ServerMux。复制中的代码
GOROOT/src/pkg/net/http/server.go。它始于837行,结束于939。
自定义ServerMux将需要一种注销方法。这应该易于实现。只需抓住锁和
del()地图条目即可。例如(所有代码未经测试):
// TODO: check if registered and return error if not.// TODO: possibly remove the automatic permanent link between /dir and /dir/.func (mux *MyMux) Deregister(pattern string) error { mux.mu.Lock() defer mux.mu.Unlock() del(mux.m, pattern) return nil}为了使用这个新的多路复用器,您需要执行以下操作:
mux := newMux()mux.Handle("/create", &factory)srv := &http.Server { Addr: localhost:8080 Handler: mux,}srv.ListenAndServe()通过
deregister()从另一个goroutine 调用来修改多路复用器是完全安全的,并且将修改
ListenAndServe()路由消息的方式。



