Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Visual Studio széles körű támogatást nyújt a többszálas alkalmazások hibakereséséhez és profilkészítéséhez.
Hibakeresés
A Visual Studio hibakeresője tartalmazza a Párhuzamos halmok ablakot, a Párhuzamos feladatok ablakot és a Párhuzamos figyelő ablakot. További információ : Útmutató: Párhuzamos alkalmazások hibakeresése és útmutató: A párhuzamos figyelőablak használata.
Profilkészítés
A profilkészítési eszközök három adatnézetet biztosítanak, amelyek grafikus, táblázatos és numerikus információkat jelenítenek meg arról, hogy egy többszálas alkalmazás hogyan kommunikál önmagával és más programokkal. A nézetek segítségével gyorsan azonosíthatja a problémás területeket, és navigálhat a grafikus kijelzők pontjairól a hívásveremekhez, a híváswebhelyekhez és a forráskódhoz. További információért lásd: Egyidejűség-vizualizáló.
Eseménykövetés
Az egyidejűségi futtatókörnyezet a Windows eseménykövetést (ETW) használja, hogy értesítse az instrumentációs eszközöket, például a profilkészítőket, amikor különböző események történnek. Ezek az események közé tartozik az ütemező aktiválása vagy inaktiválása, a környezet kezdete, vége, blokkok, blokkolások vagy hozamok feloldása, valamint egy párhuzamos algoritmus kezdete vagy vége.
Az olyan eszközök, mint az Egyidejűség-vizualizáció , ezt a funkciót használják; ezért általában nem kell közvetlenül dolgoznia ezekkel az eseményekkel. Ezek az események azonban akkor hasznosak, ha egyéni profilkészítőt fejleszt, vagy ha olyan eseménykövető eszközöket használ, mint például a Windows teljesítményeszközkészlete.
Az egyidejűségi futtatókörnyezet csak akkor indítja el ezeket az eseményeket, ha a nyomkövetés engedélyezve van. Hívja meg a concurrency::EnableTracing függvényt az eseménykövetés engedélyezéséhez, és a concurrency::DisableTracing függvényt a nyomkövetés letiltásához.
Az alábbi táblázat azokat az eseményeket ismerteti, amelyeket a futtatókörnyezet az eseménykövetés engedélyezésekor indít el:
| Esemény | Leírás | Érték |
|---|---|---|
| egyidejűség::ConcRT_ProviderGuid | Az egyidejűségi futtatókörnyezet ETW-szolgáltatóazonosítója. | f7b697a3-4db5-4d3b-be71-c4d284e6592f |
| egyidejűség::ContextEventGuid | A környezetekhez kapcsolódó események megjelölése. | 5727a00f-50be-4519-8256-f7699871fecb |
| egyidejűség::PPLParallelForEventGuid | Az concurrency::parallel_for algoritmus hívásainak belépési és kilépési pontját jelöli. | 31c8da6b-6165-4042-8b92-949e315f4d84 |
| egyidejűség::PPLParallelForeachEventGuid | Az konkurencia::parallel_for_each algoritmus hívásainak be- és kilépését jelöli. | 5cb7d785-9d66-465d-bae1-4611061b5434 |
| egyidejűség::P PLParallelInvokeEventGuid | A concurrency::parallel_invoke algoritmus hívásainak belépési és kilépési pontját jelöli. | d1b5b133-ec3d-49f4-98a3-464d1a9e4682 |
| egyidejűség::SchedulerEventGuid | Megjelöli a Tevékenységütemezőhöz kapcsolódó eseményeket. | e2091f8a-1e0a-4731-84a2-0dd57c8a5261 |
| egyidejűség::VirtualProcessorEventGuid | Megjelöli a virtuális processzorokhoz kapcsolódó eseményeket. | 2f27805f-1676-4ecc-96fa-7eb09d44302f |
Az egyidejűségi futtatókörnyezet a következő eseményeket határozza meg, de jelenleg nem emeli ki. A futtatókörnyezet a következő eseményeket foglalja le későbbi használatra:
A párhuzamosság::ConcRT_EventType felsorolás határozza meg azokat a lehetséges műveleteket, amelyeket egy esemény követ nyomon. Az algoritmus bejáratánál például a projekt futtatási környezete aktiválja az parallel_for eseményt, és PPLParallelForEventGuid-t ad meg műveletként. Az algoritmus visszatérése előtt a futtatókörnyezet ismét kiváltja az parallel_for eseményt, és műveletként biztosítja PPLParallelForEventGuid.
Az alábbi példa bemutatja, hogyan engedélyezheti a nyomkövetést a híváshoz parallel_for. A futtatókörnyezet nem követi nyomon az első hívást parallel_for, mivel a nyomkövetés nincs engedélyezve.
EnableTracing hívása lehetővé teszi, hogy a futtatókörnyezet nyomon kövesse a parallel_for második hívását.
// 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();
}
A futtatókörnyezet nyomon követi, hogy hányszor hívja meg a EnableTracing és a DisableTracing. Ezért, ha többször hívja a EnableTracing-t, azt is ugyanannyiszor kell hívnia a DisableTracing a nyomkövetés letiltásához.