Udostępnij za pośrednictwem


Równoległe narzędzia diagnostyczne (współbieżności Runtime)

Visual Studiozapewnia zaawansowaną obsługę debugowania i profilowanie aplikacji wielowątkowych.

Debugowanie

Visual Studio debugger zawiera Równolegle stosy okna, Zadania równolegle okna, i Watch równoległych okna.Aby uzyskać więcej informacji, zobacz Instruktaż: Debugowanie aplikacji równoległe i Jak: równoległy okno czujki.

Profilowanie

Narzędzia profilowania zapewniają wyświetlanie graficznego, tabelarycznych i liczbowe informacji na temat współdziałania ze sobą i z innych programów wielowątkowych aplikacji trzech widoków danych.Widoki pozwalają szybko zidentyfikować obszary zainteresowania i przejść od punktów graficzny Wyświetla wywołać stosy, wywołanie witryn i kod źródłowy.Aby uzyskać więcej informacji, zobacz Podglądacza współbieżności.

Śledzenie zdarzeń

Używa Runtime współbieżności Śledzenia zdarzeń dla systemu Windows (ETW) powiadamia narzędzi Instrumentacji, takich jak użyciu narzędzi do profilowania, gdy występują różne zdarzenia.Zdarzenia te obejmują harmonogram jest aktywowany lub Dezaktywowany kontekst rozpoczyna, kończy się, blokuje, odblokowuje lub plonów i algorytmu równoległego rozpoczyna lub kończy.

Narzędzia takie jak Podglądacza współbieżności korzystać z tej funkcji; dlatego zazwyczaj nie trzeba pracować bezpośrednio z tych zdarzeń.Jednak te zdarzenia są przydatne podczas opracowywania niestandardowych profiler lub kiedy używać narzędzia Śledzenie zdarzeń takich jak Xperf.

Runtime współbieżności wzbudzi tych zdarzeń tylko wtedy, gdy włączone jest śledzenie.Wywołanie concurrency::EnableTracing funkcji, aby włączyć śledzenie zdarzeń i concurrency::DisableTracing funkcji wyłączyć śledzenie.

W poniższej tabeli opisano zdarzenia, które podnosi wykonawczym po włączeniu śledzenia zdarzeń:

Zdarzenie

Opis

Wartość

CONCURRENCY::ConcRT_ProviderGuid

Identyfikator dostawcy ETW Runtime współbieżności.

f7b697a3-4db5-4d3b-be71-c4d284e6592f

CONCURRENCY::ContextEventGuid

Znaczniki zdarzeń związanych z kontekstów.

5727a00f-50be-4519-8256-f7699871fecb

CONCURRENCY::PPLParallelForEventGuid

Znaki na wejściu i wyjściu do wywołania concurrency::parallel_for algorytm.

31c8da6b-6165-4042-8b92-949e315f4d84

CONCURRENCY::PPLParallelForeachEventGuid

Znaki na wejściu i wyjściu do wywołania concurrency::parallel_for_each algorytm.

5cb7d785-9d66-465d-bae1-4611061b5434

CONCURRENCY::PPLParallelInvokeEventGuid

Znaki na wejściu i wyjściu do wywołania concurrency::parallel_invoke algorytm.

d1b5b133-ec3d-49f4-98a3-464d1a9e4682

CONCURRENCY::SchedulerEventGuid

Znaki zdarzenia, które są powiązane z Harmonogramu zadań.

e2091f8a-1e0a-4731-84a2-0dd57c8a5261

CONCURRENCY::VirtualProcessorEventGuid

Znaczniki zdarzeń związanych z procesorów wirtualnych.

2f27805f-1676-4ecc-96fa-7eb09d44302f

Runtime współbieżności definiuje, ale nie aktualnie podnieść, następujące zdarzenia.Środowisko wykonawcze rezerwy te zdarzenia, do wykorzystania w przyszłości:

Concurrency::ConcRT_EventType wyliczenie określa możliwe operacje, które śledzi zdarzenia.Na przykład na wejście do parallel_for algorytmu, runtime podnosi PPLParallelForEventGuid zdarzeń i zapewnia CONCRT_EVENT_START jako operacja.Przed parallel_for zwraca algorytmu, runtime ponownie wywołuje PPLParallelForEventGuid zdarzeń i zapewnia CONCRT_EVENT_END jako operacja.

Poniższy przykład ilustruje sposób włączania śledzenia dla wywołania do parallel_for.Środowisko wykonawcze nie śledzenia pierwsze wywołanie parallel_for , ponieważ to nie jest włączone śledzenie.Wywołanie EnableTracing umożliwia runtime do śledzenia, drugie wywołanie parallel_for.

// etw.cpp
// compile with: /EHsc 
#include <ppl.h>

using namespace concurrency;

int wmain()
{
   // Perform some parallel work. 
   // Event tracing is disabled at this point.
   parallel_for(0, 10000, [](int i) {
      // TODO: Perform work.
   });

   // Enable tracing for a second call to parallel_for.
   EnableTracing();
   parallel_for(0, 10000, [](int i) {
      // TODO: Perform work.
   });   
   DisableTracing();
}

Środowisko wykonawcze śledzi liczbę razy, które można wywoływać EnableTracing i DisableTracing.Dlatego jeśli EnableTracing wiele razy, należy wywołać DisableTracing taką samą liczbę razy, aby wyłączyć śledzenie.

Zobacz też

Koncepcje

Współbieżność Runtime