這是我編寫(xiě)的將請(qǐng)求添加到請(qǐng)求隊(duì)列的函數(shù):func (self *RequestQueue) addRequest(request *Request) { self.requestLock.Lock() self.queue[request.NormalizedUrl()] = request.ResponseChannel self.requestLock.Unlock()}這是它的測(cè)試之一:func TestAddRequest(t *testing.T) { before := len(rq.queue) r := SampleRequests(1)[0] rq.addRequest(&r) if (len(rq.queue) - 1) != before { t.Errorf("Failed to add request to queue") }}當(dāng)我運(yùn)行此測(cè)試時(shí),應(yīng)用程序掛起。如果我注釋掉這個(gè)測(cè)試,一切正常。我認(rèn)為問(wèn)題在于函數(shù)內(nèi)部的鎖定。有什么我做錯(cuò)了嗎?謝謝你的幫助!
測(cè)試包含鎖的函數(shù)時(shí),Go 應(yīng)用程序掛起
慕工程0101907
2021-09-09 15:02:12