zhangjinkun 6 роки тому
батько
коміт
8d0bab961e
2 змінених файлів з 19 додано та 27 видалено
  1. 16 15
      udpprojectset/src/main.go
  2. 3 12
      udpprojectset/src/projectmeger.go

+ 16 - 15
udpprojectset/src/main.go

@@ -214,22 +214,23 @@ func task(data []byte, mapInfo map[string]interface{}) {
 			log.Println("checkid err", err.Error())
 		}
 		if !b {
-			//增加判重逻辑,重复id不再生成
-			wg.Add(1)
-			idmap.Store(tmp["_id"], true)
-			MultiThread <- true
-			go func(tmp map[string]interface{}, thisid string) {
-				defer func() {
-					<-MultiThread
-					wg.Done()
-					idmap.Delete(tmp["_id"])
-				}()
-				thisinfo := PreThisInfo(tmp)
-				if thisinfo != nil {
-					startProjectMerge(thisinfo, tmp)
+			thisinfo := PreThisInfo(tmp)
+			if thisinfo != nil {
+				lockPNCBMap(thisinfo)
+				wg.Add(1)
+				idmap.Store(tmp["_id"], true) //增加判重逻辑,重复id不再生成
+				MultiThread <- true
+				go func(tmp map[string]interface{}, thisid string, info *Info) {
+					defer func() {
+						<-MultiThread
+						wg.Done()
+						idmap.Delete(tmp["_id"])
+					}()
+					startProjectMerge(info, tmp)
 					redis.Put(INFOID, thisid, 1, INFOTIMEOUT)
-				}
-			}(tmp, thisid)
+					unlockPNCBMap(info)
+				}(tmp, thisid, thisinfo)
+			}
 		}
 		if count%500 == 0 {
 			log.Println("count:", count)

+ 3 - 12
udpprojectset/src/projectmeger.go

@@ -106,8 +106,6 @@ func hasBuyer(p PCBV, thisinfo *Info, tmp map[string]interface{}) {
 		scores, pncb := score3Select2(p, thisinfo, tmp)
 		//项目合并
 		sflag = mergeProject(tmp, thisinfo, scores, pncb)
-		//pncbMap解锁
-		unlockPNCBMap(thisinfo)
 	} else {
 		//生成项目,不参与后续对比
 		sflag = "alone"
@@ -131,16 +129,12 @@ func noBuyer(p PCBV, thisinfo *Info, tmp map[string]interface{}) {
 			scores, pncb := score3Select2(p, thisinfo, tmp)
 			//项目合并
 			sflag = mergeProject(tmp, thisinfo, scores, pncb)
-			//pncbMap解锁
-			unlockPNCBMap(thisinfo)
 		} else { //无项目编号
 			if p.PnameLen > MegerFieldsLen.ProjectNamelen {
 				//三选一打分
 				scores, pncb := score3Select1(p, thisinfo, tmp)
 				//项目合并
 				sflag = mergeProject(tmp, thisinfo, scores, pncb)
-				//pncbMap解锁
-				unlockPNCBMap(thisinfo)
 			} else {
 				//生成项目,不参与后续对比
 				sflag = "alone"
@@ -159,8 +153,6 @@ func noBuyer(p PCBV, thisinfo *Info, tmp map[string]interface{}) {
 					scores, pncb := score3Select1(p, thisinfo, tmp)
 					//项目合并
 					sflag = mergeProject(tmp, thisinfo, scores, pncb)
-					//pncbMap解锁
-					unlockPNCBMap(thisinfo)
 				} else {
 					//生成项目,不参与后续对比
 					sflag = "alone"
@@ -579,20 +571,19 @@ func lockPNCBMap(thisinfo *Info) {
 		if ok {
 			break
 		}
-		time.Sleep(10 * time.Millisecond)
 	}
 	PncbMayLock.Unlock()
 }
 
 //pncbMap解锁
 func unlockPNCBMap(thisinfo *Info) {
-	if len(thisinfo.PNKey) > 2 {
+	if len(thisinfo.PNKey) > 3 {
 		PNKeyMap.Delete(thisinfo.PNKey)
 	}
-	if len(thisinfo.PCKey) > 2 {
+	if len(thisinfo.PCKey) > 3 {
 		PCKeyMap.Delete(thisinfo.PCKey)
 	}
-	if len(thisinfo.PBKey) > 2 {
+	if len(thisinfo.PBKey) > 3 {
 		PBKeyMap.Delete(thisinfo.PBKey)
 	}
 }