Browse Source

:art: Improve kernel stability by eliminating some data races https://github.com/siyuan-note/siyuan/issues/9842

Daniel 1 year ago
parent
commit
071f3f9af8
2 changed files with 7 additions and 7 deletions
  1. 4 4
      kernel/model/ocr.go
  2. 3 3
      kernel/util/tesseract.go

+ 4 - 4
kernel/model/ocr.go

@@ -44,7 +44,7 @@ func autoOCRAssets() {
 			util.AssetsTexts[p] = text
 			util.AssetsTextsLock.Unlock()
 			if "" != text {
-				util.AssetsTextsChanged = true
+				util.AssetsTextsChanged.Store(true)
 			}
 			if 7 <= i { // 一次任务中最多处理 7 张图片,防止长时间占用系统资源
 				break
@@ -71,7 +71,7 @@ func cleanNotExistAssetsTexts() {
 
 	for _, asset := range toRemoves {
 		delete(util.AssetsTexts, asset)
-		util.AssetsTextsChanged = true
+		util.AssetsTextsChanged.Store(true)
 	}
 	return
 }
@@ -134,7 +134,7 @@ func LoadAssetsTexts() {
 }
 
 func SaveAssetsTexts() {
-	if !util.AssetsTextsChanged {
+	if !util.AssetsTextsChanged.Load() {
 		return
 	}
 
@@ -160,5 +160,5 @@ func SaveAssetsTexts() {
 		logging.LogWarnf("save assets texts [size=%s] to [%s], elapsed [%.2fs]", humanize.Bytes(uint64(len(data))), assetsTextsPath, elapsed)
 	}
 
-	util.AssetsTextsChanged = false
+	util.AssetsTextsChanged.Store(false)
 }

+ 3 - 3
kernel/util/tesseract.go

@@ -41,7 +41,7 @@ var (
 	TesseractMaxSize   = 2 * 1000 * uint64(1000)
 	AssetsTexts        = map[string]string{}
 	AssetsTextsLock    = sync.Mutex{}
-	AssetsTextsChanged = false
+	AssetsTextsChanged = atomic.Bool{}
 
 	TesseractLangs []string
 )
@@ -50,7 +50,7 @@ func SetAssetText(asset, text string) {
 	AssetsTextsLock.Lock()
 	AssetsTexts[asset] = text
 	AssetsTextsLock.Unlock()
-	AssetsTextsChanged = true
+	AssetsTextsChanged.Store(true)
 }
 
 func ExistsAssetText(asset string) (ret bool) {
@@ -76,7 +76,7 @@ func GetAssetText(asset string, force bool) (ret string) {
 	AssetsTexts[asset] = ret
 	AssetsTextsLock.Unlock()
 	if "" != ret {
-		AssetsTextsChanged = true
+		AssetsTextsChanged.Store(true)
 	}
 	return
 }