我需要在C中编写一个应用程序,用于在dbus消息队列上异步发送和读取消息.我已经读过这样做,我应该使用连接提供的DBusWatch和DBusTimeout对象,但我找不到如何在任何地方使用这些的例子......
目前我使用的dbus_connection_read_write_dispatch是为了做到这一点,但我已经读过它不建议用于异步操作,因此我将不得不切换到创建自己的main loop并使用它...
我的问题最接近的答案是这一个:
http://lists.freedesktop.org/archives/dbus/2007-September/008555.html ,
建议查看我所做的dbus-gmain.c文件,但是我发现在那里调用了dbus_connection_set_watch_functions和dbus_connection_set_timeout_functions其他函数作为参数 - 我应该覆盖这些函数吗?我应该按原样使用它们吗?
我根本无法弄清楚如何使用这些来读取和写入dbus消息队列...
任何想法都会受到欢迎......
从我的阅读中看,由于存在守护进程,dbus性能应该比其他消息传递ipc机制慢两倍.
在讨论这样的问题时,Linux IPC技术使用某些人提到了性能问题.除了两倍慢的因素外,您是否看到性能问题?您是否看到阻止dbus在嵌入式系统中使用的问题?
据我所知,dbus是否适用于小消息.如果需要传递大量数据,其中一个解决方案是将数据放入共享内存或堆中,然后使用dbus进行通知.根据所讨论的其他ipc机制正在考虑的是:信号,匿名管道,命名管道或FIFO,SysV消息队列,POSIX消息队列,SysV共享内存,POSIX共享内存,SysV信号量,POSIX信号量,FUTEX锁,文件 - 支持和匿名共享内存使用mmap,UNIX域套接字,Netlink套接字,网络套接字,Inotify机制,FUSE子系统,D-Bus子系统.
我应该提一个列出要求的问题(尽管它以apache为中心):
然而,关于性能的另一个问题,所以提到的技术来提高性能.考虑到这一切,我想在嵌入式系统中使用dbus时应该有更少的问题或缺点.
在简单的轮廓中,我有一个应用程序,它在启动时查看目录并创建特殊文件的索引 - 之后它就像守护进程一样工作.另一个应用程序创建这样的"特殊"文件并将它们放在某个目录中.通知第一个应用程序有关新文件(索引它)的方法是最常见,最简单(第一个是运行时,所以它不应该减慢太多),如果可能的话,跨平台?
我看过RPC和IPC,但它们太重了(也非跨平台和慢(需要很多功能才能工作 - 我需要一个简单的轻松工作方式),可能).
有没有用于在应用程序之间共享数据的C\C++跨平台库?