第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

線程安全模式

線程安全模式

Go
森林海 2022-09-19 10:05:11
我是這樣寫的代碼:首先,我用螞蟻創(chuàng)建例程池:var pool, _ = ants.NewPoolWithFunc(5, func(commitDiff interface{}) {    AnalyzeCommitDiff(commitDiff.(diffParsedType))})*函數(shù)分析提交Diff() 包含我的antlr_analysis函數(shù)然后我寫了這些:var (    lexerPool *sync.Pool = &sync.Pool{New: func() interface{} {        return javaparser.NewJavaLexer(nil)    }}    parserPool *sync.Pool = &sync.Pool{New: func() interface{} {        return javaparser.NewJavaParser(nil)    }}    newTreeShapeListener *sync.Pool = &sync.Pool{New: func() interface{} {        return new(TreeShapeListener)    }})func executeJava(diffText string) javaparser.AnalysisInfoType {    input := antlr.NewInputStream(diffText)    lexer := lexerPool.Get().(*javaparser.JavaLexer)    defer lexerPool.Put(lexer)    lexer.SetInputStream(input)    stream := antlr.NewCommonTokenStream(lexer, 0)    p := parserPool.Get().(*javaparser.JavaParser)    defer parserPool.Put(p)    p.SetTokenStream(stream)    //p.AddErrorListener(antlr.NewDiagnosticErrorListener(true))    p.BuildParseTrees = true    p.GetInterpreter().SetPredictionMode(antlr.PredictionModeSLL)    tree := p.CompilationUnit()    listener := newTreeShapeListener.Get().(*TreeShapeListener)    defer newTreeShapeListener.Put(listener)    antlr.ParseTreeWalkerDefault.Walk(listener, tree)    return javaparser.Infos}但顯然存在問題,因?yàn)榫€程不安全。如何使代碼線程安全?誰能給我舉個例子嗎?
查看完整描述

1 回答

?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個贊

線程池不適用于 ANTLR4。出于性能原因,除了一個由解析器或詞法分析器訪問共享 DFA 的位置之外,沒有額外的線程處理。

因此,使用線程的唯一方法是將詞法分析器/解析器實(shí)例關(guān)聯(lián)到線程,并僅從此單個線程訪問該線程。每個解析器實(shí)例使用專用線程,并且永遠(yuǎn)不要在線程之間共享詞法分析器/解析器。


查看完整回答
反對 回復(fù) 2022-09-19
  • 1 回答
  • 0 關(guān)注
  • 85 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號