使用 Goroutines 池来处理基于任务的操作

lebai03 ·
为什么任务队列满了就直接丢弃了任务?不太人性化 ``` func (wp *WorkPool) queueRoutine() { for { select { case <-wp.shutdownQueueChannel: wp.shutdownQueueChannel <- "Down" return case queueItem := <-wp.queuechannel: if atomic.AddInt32(&wp.queuedWork, 0) == wp.queueCapacity { // 丢弃任务 queueItem.ResultChannel <- fmt.Errorf("Thread Pool At Capacity") continue } atomic.AddInt32(&wp.queuedWork, 1) wp.workChannel <- queueItem.Work queueItem.ResultChannel <- nil break } } } ```
#1
更多评论
polaris
社区,需要你我一同完善!
<a href="/user/DukeAnn" title="@DukeAnn">@DukeAnn</a> 他采用的策略而已,这依赖于不同的项目要求;并不是什么项目都适合这种处理策略。
#2
请问如何用无缓冲 channel 来构建 Goroutines 池呢?
#3