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

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