gpt4 book ai didi

c++ - glib 的 GAsyncQueue 等同于 C++?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:50 25 4
gpt4 key购买 nike

glib有一个名为 GAsyncQueue 的数据结构,它允许在没有信号量/锁等的情况下进行线程间通信,甚至使实现生产者/消费者解决方案的任务变得微不足道。如果两个不同的线程向一个GAsyncQueue结构推送数据,push函数内部实现了对队列的互斥访问;更棒的是,如果一个线程调用了 pop 函数,而那里没有数据,调用线程就会阻塞,直到一些数据被其他线程插入队列。所有这些都是以线程安全的方式完成的,对开发人员来说是透明的。

虽然我很喜欢它,但这个库是为 C 构建的,对于更高级别的语言可能有更好的替代品。无论如何我都在考虑使用 glib,但是在 C++ 代码中使用 C 库感觉很奇怪...

因此,问题是:是否有 C++ 推荐的 glib 等价物?更具体地说,是否有更推荐的 C++ 库提供与 GAsyncQueue 相同的功能?

最佳答案

在 C++ 程序中使用 C 绝对没有错(毕竟,C++ 实现很大程度上基于 C 运行时,例如,如果没有 pthread 库,C++11 线程支持就无法生存,至少在类 UNIX® 平台上是这样).我绝对不会只选择工具/库,并且完全基于它编写的语言。但是如果你必须使用其他东西,那么 glib 并不是世界上唯一提供异步消息传递的库(顺便说一句,它看起来并不像它支持 IPC)。无论如何,这是我立即想到的 C++ 框架列表(顺序随机,与我的想法一样随机):

每一种都有自己的长处和短处,使用哪一种取决于您的具体要求。我只能建议您注意整体应用程序架构以及异步消息传递与应用程序所有组件的匹配程度。例如,在或多或少涉及简单消息传递的复杂应用程序中,此类异步队列通常与正在使用的事件通知机制集成在一起(例如,OSX 是围绕 kqueue/GCD 构建的)。

希望对您有所帮助。祝你好运!

关于c++ - glib 的 GAsyncQueue 等同于 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15118901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com