【发布时间】:2013-02-27 17:53:43
【问题描述】:
glib 有一个名为GAsyncQueue 的数据结构,它允许在没有信号量/锁等的情况下进行线程间通信,甚至使实现生产者/消费者解决方案的任务变得微不足道。如果两个不同的线程向一个GAsyncQueue结构推送数据,push函数内部实现了对队列的互斥访问;更可怕的是,如果一个线程调用pop 函数,并且那里没有数据,调用线程会阻塞,直到一些数据被其他线程推入队列。所有这些都以线程安全的方式完成,对开发人员透明。
尽管我很喜欢它,但这个库是为 C 构建的,对于高级语言可能有更好的替代方案。反正我正在考虑使用 glib,但是在 C++ 代码中使用 C 库感觉很奇怪...
所以,问题是:是否有 C++ 推荐的 glib 等效项?更具体地说,是否有更推荐的 C++ 库提供与GAsyncQueue 相同的功能?
【问题讨论】:
-
用
std::queue、std::mutex和std::condition_variable编写一个非常容易 -
@JonathanWakely 当然,我同意你的观点,这很容易,但我更愿意使用经过良好测试(并且可能优化)的消息队列实现,而不是推出我自己的从头开始。
标签: c++ c synchronization glib