- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
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/
判断这2个相似的Uris实际上相同的标准方法是什么? var a = new Uri("http://sample.com/sample/"); var b = new Uri("http://sam
这个问题在这里已经有了答案: Why does "true" == true show false in JavaScript? (5 个答案) 关闭 5 年前。 可能我很困惑,但我无法理解这个愚蠢
我是一名优秀的程序员,十分优秀!