本文整理匯總了Golang中github.com/cloudfoundry/gunk/workpool.WorkPool.Submit方法的典型用法代碼示例。如果您正苦於以下問題:Golang WorkPool.Submit方法的具體用法?Golang WorkPool.Submit怎麽用?Golang WorkPool.Submit使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/cloudfoundry/gunk/workpool.WorkPool
的用法示例。
在下文中一共展示了WorkPool.Submit方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: fetchStateAndBuildZones
func fetchStateAndBuildZones(logger lager.Logger, workPool *workpool.WorkPool, clients map[string]rep.Client, metricEmitter auctiontypes.AuctionMetricEmitterDelegate) map[string]Zone {
wg := &sync.WaitGroup{}
zones := map[string]Zone{}
lock := &sync.Mutex{}
wg.Add(len(clients))
for guid, client := range clients {
guid, client := guid, client
workPool.Submit(func() {
defer wg.Done()
state, err := client.State()
if err != nil {
metricEmitter.FailedCellStateRequest()
logger.Error("failed-to-get-state", err, lager.Data{"cell-guid": guid})
return
}
if state.Evacuating {
return
}
cell := NewCell(logger, guid, client, state)
lock.Lock()
zones[state.Zone] = append(zones[state.Zone], cell)
lock.Unlock()
})
}
wg.Wait()
return zones
}
示例2:
default:
panic(fmt.Sprintf("unknown communication mode: %s", communicationMode))
}
})
var _ = BeforeEach(func() {
var err error
workPool, err = workpool.NewWorkPool(workers)
Expect(err).NotTo(HaveOccurred())
wg := &sync.WaitGroup{}
wg.Add(len(cells))
for _, cell := range cells {
cell := cell
workPool.Submit(func() {
cell.Reset()
wg.Done()
})
}
wg.Wait()
util.ResetGuids()
runnerDelegate = NewAuctionRunnerDelegate(cells)
metricEmitterDelegate := NewAuctionMetricEmitterDelegate()
runner = auctionrunner.New(
runnerDelegate,
metricEmitterDelegate,
clock.NewClock(),
workPool,
logger,
)
示例3:
unblockChan := unblockChan
calledChan <- i
<-unblockChan
}
}
var err error
pool, err = workpool.NewWorkPool(maxWorkers)
Expect(err).NotTo(HaveOccurred())
})
Describe("Submit", func() {
Context("when submitting less work than the max number of workers", func() {
It("should run the passed-in work", func() {
for i := 0; i < maxWorkers-1; i++ {
pool.Submit(work(i))
}
for i := 0; i < maxWorkers-1; i++ {
Eventually(calledChan).Should(Receive(Equal(i)))
}
})
})
Context("when submitting work equal to the number of workers", func() {
It("should run the passed-in work concurrently", func() {
for i := 0; i < maxWorkers; i++ {
pool.Submit(work(i))
}
for i := 0; i < maxWorkers; i++ {