12

我试图弄清楚是否有一个库可以为我提供与 Windows 自定义性能计数器相当的东西(在此处描述http://geekswithblogs.net/.NETonMyMind/archive/2006/08/20/88549.aspx

基本上,我正在寻找既可用于跟踪应用程序中的全局计数器,又可用于(理想情况下)通过明确定义的界面向其他应用程序/用户呈现该信息的东西。这些是应用统计信息;可以通过其他方式捕获内存和磁盘之类的东西,但我希望公开在我的应用程序生命周期内处理的吞吐量/事务/“小部件”。

我看过这个问题:

Linux/Unix 中“性能计数器”的概念

和这个

Linux 中的注册表级计数器可从 Java 访问

但两者都不是我想要的。我不想编写静态文件(这毕竟是动态信息;即使磁盘已满等我也应该能够得到它),并且如果可能的话,宁愿避免使用自制的代码集。理想情况下,至少在 Linux 上,这些数据(我认为)会以某种方式通过 /proc 出现,尽管我不清楚这是否可以从用户空间完成(这不太重要,只要它出现在某些给客户的方式。)

但回到问题的关键:是否有任何内置或合适的 3rd-party 库可以为我提供适用于我可以在 Linux 和其他 *NIXy 操作系统上使用的应用程序指标的自定义全局(线程安全、高性能)计数器? (并且可以从 C/C++ 接口?)

4

1 回答 1

1

除了@user964970评论/解决方案,我建议让它与操作系统无关。

使用与操作系统无关的 API,如 ACE 或 BOOST,创建您自己的库,提供一个命名信号量写保护计数器,放置在命名共享内存段内。

这应该是您图书馆的 API:

long * createCounter(const char * name); // Create a counter
                                         // Will create a named semaphore and a named
                                         // shared memory segment, holding the counter     
                                         // value. Will return pointer to counter
long * getCounter(const char * name); // Get existing counter pointer
                                      // in the calling process' address space
long incCounter(const char * name);   // increment existing counter
于 2014-06-04T21:40:21.957 回答