【发布时间】:2016-08-29 12:08:17
【问题描述】:
特别是,我在 C++ 中有一些阻塞队列,我想等到其中任何一个有一些我可以弹出的项目。
我能想到的唯一机制是为每个队列生成一个单独的线程,该线程从其输入队列中弹出并馈送到原始线程可以等待的主队列。
每次我想从一组队列中弹出时,生成 N 个新线程然后将它们全部杀死似乎是一种资源繁重。
Golang 是否实现了一些我可以在我自己的 C++ 代码中实现的更优雅的机制?
【问题讨论】:
-
我认为您不能仅使用标准工具在一个线程中等待多个条件变量。也许您可以反转问题,让队列主动推送到“主”队列中,它们现在通知阻塞线程。
-
Go 的 select 实现是here,也许它可以给你一些想法。
标签: c++ multithreading go