跨平台后台服务+ GUI

时间:2012-01-02 20:41:18

标签: c++ qt boost background

这似乎是典型的应用: 1.程序的一部分应扫描后台的音频文件并将标签写入数据库。 2.另一部分进行搜索查询并显示结果。 应用程序应该是跨平台的。

因此,主搜索循环,包括向数据库添加数据不是问题。问题是: 1.实施此后台工作服务的最佳方式是什么? Boost(asio)还是Qt(服务框架?)? 2.使用提到的库创建本机服务包装器或使用非gui应用程序模拟它的最佳方法是什么? 3.我应该将gui连接到服务(如何使用boost或qt进行通信?)或直接连接到数据库(可以锁定吗?)? 4.第1点中的decsision会占用所有CPU使用量吗?以及如何避免这种情况?如何实现扫描文件少cpu耗材?S

1 个答案:

答案 0 :(得分:0)

我喜欢使用Poco,它具有方便的ServerApplication类,可以在可以作为普通命令行应用程序运行的应用程序中使用,也可以作为Windows服务运行,或者作为* nix使用守护进程无需触摸代码。

如果您使用“真实”数据库(MySQL,PostgreSQL,SQL Server),那么从GUI应用程序查询数据库可能很好,也更容易。如果您使用的其他类型的数据库不一定是多用户友好的,那么您应该使用环回套接字或管道与服务进行通信。

就CPU使用情况而言,您可以在代码中使用一堆“睡眠”调用来搜索文件,以确保它不会占用CPU和IO端口。或者使用某种间隔通知来允许它定期搜索块。