Pārlūkot izejas kodu

调用mcp-测试通过-搜索店铺档案表

qdy 1 mēnesi atpakaļ
vecāks
revīzija
5ee4dc8054
1 mainītis faili ar 11 papildinājumiem un 2 dzēšanām
  1. 11
    2
      factory/database/dbs_factory.go

+ 11
- 2
factory/database/dbs_factory.go Parādīt failu

@@ -35,12 +35,21 @@ func CreateDBSFactory(cfg config.IConfig) *DBSFactory {
35 35
 
36 36
 // ========== DBSFactory 实例方法 ==========
37 37
 
38
-// / CreateDBFactory 创建指定名称的数据库工厂
38
+// CreateDBFactory 创建指定名称的数据库工厂
39 39
 func (d *DBSFactory) CreateDBFactory(name string) (*DBFactory, error) {
40
+	// 第一次检查(不加锁),如果存在直接返回
41
+	d.mu.RLock()
42
+	if factory := d.factories[name]; factory != nil {
43
+		d.mu.RUnlock()
44
+		return factory, nil
45
+	}
46
+	d.mu.RUnlock()
47
+
48
+	// 加锁进行创建
40 49
 	d.mu.Lock()
41 50
 	defer d.mu.Unlock()
42 51
 
43
-	// 如果已存在,直接返回
52
+	// 第二次检查(加锁后),防止并发创建
44 53
 	if factory := d.factories[name]; factory != nil {
45 54
 		return factory, nil
46 55
 	}

Notiek ielāde…
Atcelt
Saglabāt