Описание
Используйте для точки продолжения параллельного потока.
Все экземпляры параллельного потока эквивалентны и связаны с одним и тем же Begin или Next события, которые произошли ранее. Примером начальной точки потока является планирование заданий. Например, IJobParallelForExtensions.Schedule генерирует неявное событие потока Begin Profiler и IJobParallelFor.Execute создает неявное событие ParallelNext.
using System;
using System.Threading;
using Unity.Profiling;
using Unity.Profiling.LowLevel;
using Unity.Profiling.LowLevel.Unsafe;
public class Example
{
static readonly ProfilerMarker k_ScheduleParallelTasksMarker = new ProfilerMarker("Schedule Parallel Tasks");
static readonly ProfilerMarker k_ParallelTaskMarker = new ProfilerMarker("Parallel Task");
static void EmitFlowEventAndChainThread(uint flowId)
{
// Mark the next k_ParallelTaskMarker as a beginning of the flow
ProfilerUnsafeUtility.FlowEvent(flowId, ProfilerFlowEventType.ParallelNext);
using (k_ParallelTaskMarker.Auto())
{
// Do work
}
}
static void ScheduleParallelTask()
{
using (k_ScheduleParallelTasksMarker.Auto())
{
var flowId = ProfilerUnsafeUtility.CreateFlow(ProfilerUnsafeUtility.CategoryScripts);
// Mark the parent k_ScheduleParallelTasksMarker as a beginning of the flow
ProfilerUnsafeUtility.FlowEvent(flowId, ProfilerFlowEventType.Begin);
var thread = new Thread(() => EmitFlowEventAndChainThread(flowId));
thread.Start();
}
}
}
Смотрите так же: ProfilerUnsafeUtility.FlowEvent.