From 96419afafe807e33c72b75158c5f01d5edcbf397 Mon Sep 17 00:00:00 2001 From: john Date: Mon, 5 Nov 2018 10:39:18 +0800 Subject: [PATCH] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E7=9A=84gfsnotify.Watcher?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E5=8F=AA=E6=9C=89=E5=9C=A8=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=97=B6=E6=89=8D=E4=BC=9A=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/os/gfsnotify/gfsnotify.go | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/g/os/gfsnotify/gfsnotify.go b/g/os/gfsnotify/gfsnotify.go index 0bb7d0fe2..e7f644559 100644 --- a/g/os/gfsnotify/gfsnotify.go +++ b/g/os/gfsnotify/gfsnotify.go @@ -11,6 +11,7 @@ package gfsnotify import ( "gitee.com/johng/gf/g/container/gmap" "gitee.com/johng/gf/g/container/gqueue" + "gitee.com/johng/gf/g/container/gtype" "gitee.com/johng/gf/g/encoding/ghash" "gitee.com/johng/gf/g/os/gcache" "gitee.com/johng/gf/third/github.com/fsnotify/fsnotify" @@ -52,17 +53,20 @@ const ( var ( // 全局监听对象,方便应用端调用 - watchers = make([]*Watcher, DEFAULT_WATCHER_COUNT) + watchers = make([]*Watcher, DEFAULT_WATCHER_COUNT) + // 默认的watchers是否初始化,使用时才创建 + watcherInited = gtype.NewBool() ) - -// 包初始化,创建8个watcher对象,用于包默认管理监听 -func init() { - for i := 0; i < DEFAULT_WATCHER_COUNT; i++ { - if w, err := New(); err == nil { - watchers[i] = w - } else { - panic(err) +// 初始化创建8个watcher对象,用于包默认管理监听 +func initWatcher() { + if !watcherInited.Set(true) { + for i := 0; i < DEFAULT_WATCHER_COUNT; i++ { + if w, err := New(); err == nil { + watchers[i] = w + } else { + panic(err) + } } } } @@ -97,5 +101,6 @@ func Remove(path string) error { // 根据path计算对应的watcher对象 func getWatcherByPath(path string) *Watcher { + initWatcher() return watchers[ghash.BKDRHash([]byte(path)) % DEFAULT_WATCHER_COUNT] }