并发可视化工具 SDK

可以使用并发可视化工具 SDK 为源代码添加标记,以在并发分析器中显示更多信息。 可以将其他数据与代码中的阶段和事件相关联。 这些附加可视化效果称为 标记。 如需了解入门演练,请参阅 并发可视化工具 SDK 简介

属性

标志、范围和消息各有两个属性:类别和重要性。 在 “高级设置” 对话框中,可以使用这些属性筛选显示的标记集。 此外,这些属性会影响标记的可视表示形式。 例如,标志的大小用于表示重要性。 此外,颜色用于指示类别。

基本用法

并发可视化工具公开可用于生成标记的默认提供程序。 服务提供者已与并发性可视化工具一起注册,不需要执行任何其他操作即可使标记出现在用户界面中。

C# 和 Visual Basic

在 C#、Visual basic 和其他托管代码中,通过在 Markers 类中调用方法,使用默认提供程序。 它公开用于生成标记的四种方法: WriteFlagEnterSpanWriteMessageWriteAlert。 这些函数有多个重载,具体取决于是否要使用属性的默认值。 最简单的重载仅采用指定事件说明的字符串参数。 说明显示在并发可视化工具报表中。

向 C# 或 Visual Basic 项目添加 SDK 支持
  1. 在菜单栏上,选择“ 分析”、“ 并发可视化工具”, 将 SDK 添加到项目中

  2. 选择要在其中访问 SDK 的项目,然后选择“ 将 SDK 添加到所选项目 ”按钮。

  3. 将导入语句或 using 语句添加到代码中。

    using Microsoft.ConcurrencyVisualizer.Instrumentation;
    

C++

在C++中创建 marker_series类 对象,并使用它调用函数。 该 marker_series 类公开三个用于生成标记的函数: marker_series::write_flag 方法marker_series::write_message 方法和marker_series::write_alert 方法

向 C++ 或 C 项目添加 SDK 支持
  1. 在菜单栏上,选择“ 分析”、“ 并发可视化工具”, 将 SDK 添加到项目中

  2. 选择要在其中访问 SDK 的项目,然后选择“ 将 SDK 添加到所选项目 ”按钮。

  3. 对于C++,请包括 cvmarkersobj.h。 对于 C,包括 cvmarkers.h.

  4. 向代码添加 using 语句。

    using namespace Concurrency::diagnostic;
    
  5. 创建一个 marker_series 对象并将其传递给 span 构造函数。

    
    marker_series mySeries;
    span s(mySeries, _T("Span description"));
    
    

自定义用法

对于高级方案,并发可视化工具 SDK 公开了更多控制。 两个主要概念与更高级的方案相关联:标记提供程序和标记系列。 标记提供商是不同的 ETW 提供商(每个提供商都有不同的 GUID)。 标记系列是由一个提供者生成的事件的串行通道。 可以使用它们来组织由标记提供程序生成的事件。

在 C# 或 Visual Basic 项目中使用新的标记提供程序

  1. 创建 MarkerWriter 对象。 构造函数接受 GUID。

  2. 若要注册提供程序,请打开“并发可视化工具 高级设置” 对话框。 选择“ 标记 ”选项卡,然后选择“ 添加新提供程序 ”按钮。 在 “高级设置” 对话框中,输入用于创建提供程序的 GUID 和提供程序的说明。

在 C++ 或 C 项目中使用新的标记提供程序

  1. 使用函数 CvInitProvider 初始化PCV_PROVIDER。 构造函数采用 GUID* 和 PCV_PROVIDER*。

  2. 若要注册提供程序,请打开 “高级设置” 对话框。 选择“ 标记 ”选项卡,然后选择“ 添加新提供程序 ”按钮。 在此对话框中,输入用于创建提供程序的 GUID 和提供程序的说明。

在 C# 或 Visual Basic 项目中使用标记系列

  1. 若要使用新的 MarkerSeries,请先使用 MarkerWriter 对象创建它,然后直接从新系列生成标记事件。

    MarkerSeries series1 = myMarkerWriter.CreateMarkerSeries("Series 1");
    series1.WriteFlag("My flag");
    

在C++项目中使用标记集

  1. 创建 marker_series 对象。 可以从此新系列生成事件。

    marker_series series;
    series.write_flag(_T("Hello world!"));
    

在 C 项目中使用标记系列

  1. 使用该 CvCreateMarkerSeries 函数创建PCV_MARKERSERIES。

    PCV_MARKERSERIES series;
    CvCreatemarkerSeries(myProvider, _T("My Series"), &series);
    CvWriteFlag(series, _T("Writing a flag"));
    

另请参阅

Title Description
C++库参考 介绍用于C++的并发可视化工具 API。
C 库参考 介绍适用于 C 的并发可视化工具 API。
仪器设备 介绍托管代码的并发可视化工具 API。
并发可视化工具 有关通过并发方法生成且包含线程执行数据的分析数据文件视图和报表的参考信息。