From 2f6aa0c14f439286f73d433145ed97e8ed977975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Mon, 2 Oct 2023 16:05:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BC=93=E5=AD=98=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=95=B0=E6=8D=AE=E5=BA=93=E5=8A=A0=E8=BD=BD=E9=80=9F?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/caches/list_file.go | 39 +++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/internal/caches/list_file.go b/internal/caches/list_file.go index 97f929d..729ca1c 100644 --- a/internal/caches/list_file.go +++ b/internal/caches/list_file.go @@ -13,6 +13,7 @@ import ( "github.com/TeaOSLab/EdgeNode/internal/utils/fnv" "github.com/iwind/TeaGo/types" "os" + "sync" "time" ) @@ -61,19 +62,37 @@ func (this *FileList) Init() error { } remotelogs.Println("CACHE", "loading database from '"+dir+"' ...") + var wg = &sync.WaitGroup{} + var locker = sync.Mutex{} + var lastErr error + for i := 0; i < CountFileDB; i++ { - var db = NewFileListDB() - err = db.Open(dir + "/db-" + types.String(i) + ".db") - if err != nil { - return err - } + wg.Add(1) + go func(i int) { + defer wg.Done() - err = db.Init() - if err != nil { - return err - } + var db = NewFileListDB() + err = db.Open(dir + "/db-" + types.String(i) + ".db") + if err != nil { + lastErr = err + return + } - this.dbList[i] = db + err = db.Init() + if err != nil { + lastErr = err + return + } + + locker.Lock() + this.dbList[i] = db + locker.Unlock() + }(i) + } + wg.Wait() + + if lastErr != nil { + return lastErr } // 升级老版本数据库