本文整理汇总了Golang中github.com/cloudfoundry/gunk/workpool.WorkPool类的典型用法代码示例。如果您正苦于以下问题:Golang WorkPool类的具体用法?Golang WorkPool怎么用?Golang WorkPool使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了WorkPool类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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: init
DiskMB: 100.0,
Containers: 100,
}
var timeout time.Duration
var workers int
var svgReport *visualization.SVGReport
var reports []*visualization.Report
var reportName string
var disableSVGReport bool
var sessionsToTerminate []*gexec.Session
var runnerProcess ifrit.Process
var runnerDelegate *auctionRunnerDelegate
var workPool *workpool.WorkPool
var runner auctiontypes.AuctionRunner
var logger lager.Logger
func init() {
flag.StringVar(&communicationMode, "communicationMode", "inprocess", "one of inprocess or http")
flag.DurationVar(&timeout, "timeout", time.Second, "timeout when waiting for responses from remote calls")
flag.IntVar(&workers, "workers", 500, "number of concurrent communication worker pools")
flag.BoolVar(&disableSVGReport, "disableSVGReport", false, "disable displaying SVG reports of the simulation runs")
flag.StringVar(&reportName, "reportName", "report", "report name")
}
func TestAuction(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Auction Suite")
示例3:
"github.com/cloudfoundry-incubator/auction/auctionrunner"
"github.com/cloudfoundry-incubator/auction/auctiontypes/fakes"
"github.com/cloudfoundry-incubator/rep"
"github.com/cloudfoundry-incubator/rep/repfakes"
"github.com/cloudfoundry/gunk/workpool"
"github.com/pivotal-golang/lager"
"github.com/pivotal-golang/lager/lagertest"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("ZoneBuilder", func() {
var repA, repB, repC *repfakes.FakeSimClient
var clients map[string]rep.Client
var workPool *workpool.WorkPool
var logger lager.Logger
var metricEmitter *fakes.FakeAuctionMetricEmitterDelegate
BeforeEach(func() {
logger = lagertest.NewTestLogger("test")
var err error
workPool, err = workpool.NewWorkPool(5)
Expect(err).NotTo(HaveOccurred())
repA = new(repfakes.FakeSimClient)
repB = new(repfakes.FakeSimClient)
repC = new(repfakes.FakeSimClient)
clients = map[string]rep.Client{
示例4:
package workpool_test
import (
"github.com/cloudfoundry/gunk/workpool"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("WorkPool", func() {
var pool *workpool.WorkPool
AfterEach(func() {
if pool != nil {
pool.Stop()
}
})
Context("when max workers is non-positive", func() {
It("errors", func() {
_, err := workpool.NewWorkPool(0)
Expect(err).To(HaveOccurred())
})
})
Context("when max workers is positive", func() {
var maxWorkers int
var calledChan chan int
var unblockChan chan struct{}
var work func(int) func()