对 API 函数的描述如下所示。
C 和 C++:collector_sample(char *name)
Fortran: collector_sample(string name)
Java:CollectorAPI.sample(String name)
记录样本包并用指定的名称或字符串标记该样本。该标签显示在性能分析器的“事件”选项卡中。Fortran 参数 string 的类型为 character。
样本点包含进程(而不是单独的线程)的数据。在多线程应用程序中,如果在 collector_sample() API 函数记录样本时发生另一个调用,则该函数可确保只写入一个样本。所记录的样本数可能会少于发出该调用的线程数。
性能分析器不对由不同机制记录的样本进行区分。如果只想查看 API 调用所记录的样本,则应当在记录性能数据时关闭所有其他抽样模式。
C、C++ 和 Fortran:collector_pause()
Java:CollectorAPI.pause()
停止将特定于事件的数据写入实验。实验将保持打开状态,并将继续写入全局数据。如果没有活动的实验或者已经停止记录数据,则该调用将被忽略。该函数停止写入所有特定于事件的数据,即使它是由 collector_thread_resume() 函数针对特定线程启用的也是如此。
C、C++ 和 Fortran:collector_resume()
Java:CollectorAPI.resume()
在调用 collector_pause() 之后恢复将特定于事件的数据写入实验。如果没用活动的实验或数据记录功能处于活动状态,则该调用将被忽略。
仅限 C 和 C++:collector_thread_pause(unsigned int t)
Java:CollectorAPI.threadPause(Thread t)
停止将特定于事件的数据从参数列表中所指定的线程写入实验。对于 C/C++ 程序,参数 t 是 POSIX 线程标识符;对于 Java 程序,该参数是 Java 线程。如果实验已经终止、没有活动的实验或已经关闭对该线程数据的写入功能,则该调用将被忽略。即使全局启用了数据写入功能,该函数也会停止写入指定线程的数据。缺省情况下,对单独线程的数据记录功能处于打开状态。
仅限 C 和 C++:collector_thread_resume(unsigned int t)
Java:CollectorAPI.threadResume(Thread t)
恢复将参数列表中指定线程的特定于事件的数据写入实验。对于 C/C++ 程序,参数 t 是 POSIX 线程标识符;对于 Java 程序,该参数是 Java 线程。如果实验已经终止、没有活动的实验或对该线程数据的写入功能已经打开,则该调用将被忽略。只有在全局启用了数据写入功能,而且还针对该线程启用了数据写入功能时,才可以将数据写入实验中。
C、C++ 和 Fortran:collector_terminate_expt()
Java:CollectorAPI.terminate