Описание
Используйте для начальной точки потока.
Тип события потока Begin помечает образец профилировщика как начальную точку потока. Новый идентификатор потока создается для события Begin. Используйте его для отслеживания всех выборок профилировщика, принадлежащих одному и тому же потоку. Next обозначает следующую точку потока, а End обозначает завершение потока. . Идентификатор потока начинается с 1 и увеличивается на 1 для каждого нового Begin.
Примером начальной точки потока является планирование заданий. Например, IJobExtensions.Schedule генерирует неявное событие потока Begin Profiler и IJob.Execute создает неявное событие Next.
using System;
using System.Threading;
using Unity.Profiling;
using Unity.Profiling.LowLevel;
using Unity.Profiling.LowLevel.Unsafe;
public class Example
{
static readonly ProfilerMarker k_ScheduleTasksMarker = new ProfilerMarker("Schedule Task");
static readonly ProfilerMarker k_TaskMarker = new ProfilerMarker("Task");
static void EmitFlowEventAndChainThread(uint flowId)
{
// Mark the next k_TaskMarker as a beginning of the flow
ProfilerUnsafeUtility.FlowEvent(flowId, ProfilerFlowEventType.Next);
using (k_TaskMarker.Auto())
{
// Do work
}
}
static void ScheduleTask()
{
using (k_ScheduleTasksMarker.Auto())
{
var flowId = ProfilerUnsafeUtility.CreateFlow(ProfilerUnsafeUtility.CategoryScripts);
// Mark the parent k_ScheduleTasksMarker as a beginning of the flow
ProfilerUnsafeUtility.FlowEvent(flowId, ProfilerFlowEventType.Begin);
var thread = new Thread(() => EmitFlowEventAndChainThread(flowId));
thread.Start();
}
}
}
Смотрите так же: ProfilerUnsafeUtility.FlowEvent.