Oracle® Solaris Studio 12.4:IDE 快速入门教程

退出打印视图

更新时间: 2014 年 10 月
 
 

了解线程使用情况

"Thread Usage"(线程使用情况)指示器显示了程序正在使用的线程数量以及线程必须等待锁以继续执行其任务的时间。此数据对于多线程应用程序很有用,这些应用程序为了避免昂贵的等待时间必须执行线程同步。

  1. "Thread Usage"(线程使用情况)指示器显示项目运行时所运行的线程数。将时间滑块滑回开始处,注意线程数为 1,直到并行演示开始。在下图中,该时间为 8:07,从 1 个线程跳跃到 32 个。

    image:“Thread Usage“(线程使用情况),线程从 1 个跳跃到 32 个。
  2. 将视图滑块端点手柄移至并行演示刚刚开始的位置。

    image:并行演示和 Pthread 互斥演示的 “Thread Usage“(线程使用情况)特写。

    请注意,在同一时间段的 "CPU Usage"(CPU 使用情况)和 "Memory Usage"(内存使用情况)指示器中,单个线程正在执行某个使用 CPU 时间和内存的活动。此时间段对应于串行演示部分,主线程先在文件中写入数据,然后再执行一些计算。在程序等待用户按 Enter 键时,CPU 和内存使用率将会减少,线程数保持为 1 个。

  3. 向右滑动时间滑块,直到看到线程数增加的两个点。

    8:07 时的线程数增加与项目运行的并行演示部分相对应。主线程启动其他线程,执行向文件写入的工作以及并行执行计算。请注意内存使用情况和 CPU 使用情况的增加,但是完成两个任务的时间要少得多。

  4. 在并行演示线程结束后,线程数恢复为 1 个,主线程等待您按 Enter 键。运行程序的 Pthread 互斥演示部分时,线程数将再次增加。

    请注意,在 Pthread 互斥演示部分出现锁等待,以橙色显示。Pthread 互斥演示使用互斥锁来防止多个线程对某些函数进行重叠访问,这会导致线程需要等待获取锁。

    单击 "Sync Problems"(同步问题)按钮以显示有关项目中的线程锁定的详细信息。将打开 "Thread Synchronization Details"(线程同步详细信息)窗口,并列出必须等待获取互斥锁的函数。还会显示以下度量:函数等待时所花费的毫秒数以及函数必须等待获得锁的次数。本示例没有同步问题。

    image:“Thread Synchronization Details“(线程同步详细信息)窗口,未检测到问题。

    如果在程序运行时单击 "Sync Problems"(同步问题)按钮,则可能需要单击刷新按钮 image: ,以使用最新线程锁定信息更新显示。

  5. 单击 "Wait Time"(等待时间)列以按等待所花费的时间顺序对函数进行排序。

  6. 单击 "Lock Waits"(锁等待次数)列以按函数中线程等待的次数对函数进行排序。

  7. 双击某个函数以便在编辑器中打开其源文件并停在该函数负责锁定内存位置的位置。"Wait Time"(等待时间)和 "Lock Waits"(锁等待次数)度量显示在源文件的左侧列中。请将鼠标放在度量上以查看详细信息,它与 "Thread Synchronization Details"(线程同步详细信息)窗口中显示的内容是一致的。

  8. 右键单击这些度量,并取消选定 "Show Profiler Metrics"(显示分析器度量)。这些度量将不会再显示在任何配置工具的程序编辑器中。要重新显示度量,请在 IDE 菜单栏中选择 "View"(视图),然后选择 "Show Profiler Metrics"(显示分析器度量)。