Porównywanie współbieżności środowiska wykonawczego z innymi modelami współbieżności
W tym dokumencie opisano różnice między funkcjami i modele programowania Runtime współbieżności i innych technologii.Zrozumienie, jak korzyści Runtime współbieżności w porównaniu do korzyści inne modele programowania, można wybrać technologii, który najlepiej spełnia wymagania aplikacji.
Jeśli używasz innego modelu programowania, takich jak pula wątków Windows lub OpenMP, są sytuacje, gdzie mogą być odpowiednie do migracji do środowiska wykonawczego współbieżności.Na przykład temat Migrowanie z OpenMP do współbieżności środowiska wykonawczego opisuje, kiedy mogą być odpowiednie do migracji z OpenMP do Runtime współbieżności.Jednakże jeśli jesteś zadowolony z wydajności aplikacji i bieżące obsługę debugowania, migracji nie jest wymagane.
Funkcje i korzyści wydajności Runtime współbieżności można użyć w celu uzupełnienia istniejących aplikacji korzystającej z innego modelu współbieżności.Runtime współbieżności nie może zagwarantować, równoważenie obciążenia, gdy wiele zadań planiści konkurują o tych samych zasobów komputerowych.Jednakże gdy nie pokrywają obciążenia pracą, efekt jest minimalne.
Sekcje
Porównanie cenią sobie wcześniejsze planowanie w celu planowania współpracy
Porównanie Runtime współbieżności Windows API
Porównanie obsługi współbieżności OpenMP
Porównanie cenią sobie wcześniejsze planowanie w celu planowania współpracy
Model wywłaszczaniem i spółdzielni planowania modeli dwa sposoby wspólnej włączyć wiele zadań do udostępniania zasobów komputerowych, na przykład procesorów lub wątków sprzętu.
Planowanie wywłaszczaniem i współpracy
Planowanie wywłaszczaniem jest mechanizm round-robin, na podstawie priorytetów, który daje każdego zadania wyłącznego dostępu do zasobów komputerowych dla danego okresu, a następnie przełączy się do innego zadania.Planowanie wywłaszczaniem jest wspólne wielozadaniowość systemów operacyjnych, takich jak Windows. Wspólne planowanie jest mechanizm, który daje każdego zadania wyłącznego dostępu do zasobów komputerowych przed zakończeniem zadania lub zadania daje jego dostęp do zasobu.Runtime współbieżności używa planowania współpracy wraz z wywłaszczaniem harmonogram systemu operacyjnego, aby osiągnąć maksymalne obciążenie zasobów przetwarzania.
Różnice między planiści wywłaszczaniem i współpracy
Wywłaszczaniem planiści starać się nadać równego dostępu wielu wątków do przetwarzania danych zasobów, aby zapewnić, że każdy wątek w postępu.Na komputerach, które mają wiele zasobów komputerowych zapewnienie sprawiedliwego dostępu będzie mniej problematyczne; jednakże zapewnienie efektywnego wykorzystania zasobów zostaje większym problemem.
Harmonogram wywłaszczaniem trybu jądra wymaga kodu aplikacji polegać na system operacyjny do podejmowania decyzji w harmonogramie.Odwrotnie harmonogram współpracy trybu użytkownika umożliwia aplikacji kod, aby decyzje planowania.Dlatego wspólne planowanie umożliwia wielu planowania decyzji podejmowanych przez aplikację, zmniejsza wiele obciążenie, które jest skojarzone z synchronizacji w trybie jądra.Harmonogram współpracy zazwyczaj podporządkowuje planowania decyzje do jądra systemu operacyjnego, gdy nie ma żadnej pracy, aby zaplanować.Harmonogram współpracy również podporządkowuje do harmonogramu systemu operacyjnego, gdy istnieje operacja blokująca, która jest przekazywana do jądra, ale operacja nie jest przekazywana do harmonogramu trybu użytkownika.
Wspólne planowanie i wydajności
Aby cenią sobie wcześniejsze harmonogram wszystkich prac, który ma ten sam poziom priorytetu jest równa.Harmonogram wywłaszczaniem zwykle planuje wątki w kolejności ich tworzenia.Ponadto harmonogram wywłaszczaniem daje każdy wątek czas procesora w sposób okrężny, na podstawie priorytetu wątku.Chociaż ten mechanizm uczciwości (każdy wątek czyni postęp), pochodzi niektóre kosztem wydajności.Na przykład wiele algorytmów obliczeń intensywnie nie wymagają słuszności.Zamiast tego jest ważne, że zadania pokrewne zakończy się w co najmniej całkowity czas.Wspólne planowanie umożliwia bardziej efektywne planowanie pracy aplikacji.Rozważmy na przykład aplikacja, która ma wiele wątków.Planowanie wątków, które nie współużytkują zasobów, aby uruchomić jednocześnie można zmniejszyć obciążenie synchronizacji i tym samym zwiększenie wydajności.Kolejny skuteczny sposób na planowanie zadań jest uruchomienie rurociągów zadania (gdy poszczególne zadania działa na dane wyjściowe poprzedniego) na tym samym procesorze, dzięki czemu dane wejściowe, każdy etap potoku jest już załadowany do pamięci podręcznej.
Korzystanie z wywłaszczaniem i wspólne planowanie razem
Wspólne planowanie nie rozwiązuje wszystkich problemów z planowaniem.Na przykład zadań, które nie dają dość do innych zadań można używać wszystkich dostępnych zasobów obliczeniowych i uniemożliwić innych zadań postępu.Runtime współbieżności używa korzyści płynące z efektywności współpracy planowania uzupełnienie gwarancje uczciwości wywłaszczaniem planowania.Domyślnie Runtime współbieżności zawiera harmonogramu współpracy, która wykorzystuje algorytm kradzież pracy do efektywnej dystrybucji pracy wśród zasobów komputerowych.Jednakże harmonogram Runtime współbieżności również korzysta się z wywłaszczaniem harmonogram systemu operacyjnego dość rozkładu zasobów między aplikacjami.W aplikacjach do wyprodukowania bardzo dokładną kontrolę wykonanie wątku, można utworzyć niestandardowe planiści i harmonogram zasady.
Top
Porównanie Runtime współbieżności Windows API
Microsoft Windows interfejsu programowania aplikacji, która jest zwykle nazywane Windows API (i dawniej Win32), zapewnia model programowania, który umożliwia współbieżności w aplikacji.Runtime współbieżności opiera się na Windows API, aby zapewnić dodatkowe modele programowania, które nie są dostępne z systemu operacyjnego.
Runtime współbieżności opiera się na modelu wątków Windows API wykonywanie pracy równolegle.Użyto także Windows API zarządzania pamięcią i mechanizmów pamięci lokalnej wątku.W systemie Windows 7 i Windows Server 2008 R2 obsługi interfejsu API systemu Windows używa wątków wykonywanie użytkowników i komputerów, które mają więcej niż 64 wątki sprzętu.Runtime współbieżności rozszerzają model Windows API, udzielając harmonogram zadań współpracy i algorytm kradzież pracy do optymalnego wykorzystania zasobów komputerowych i umożliwiając wielu wystąpień jednoczesnych harmonogramu.
Aby uzyskać więcej informacji na temat interfejsu API systemu Windows, zobacz Omówienie interfejsu API systemu Windows.
Języki programowania
Interfejs API systemu Windows używa języka programowania c do określania modelu programowania.Runtime współbieżności zawiera interfejs programowania C++, który wykorzystuje najnowsze funkcje języka C++.Na przykład funkcji lambda zapewniają mechanizm zwięzłe, typ palety definiowania funkcji pracy równolegle.Aby uzyskać więcej informacji na temat najnowsze funkcje C++, które używa Runtime współbieżności zobacz Omówienie współbieżności środowiska wykonawczego.
Wątki i pule wątków
Mechanizm centralnej współbieżności w Windows API jest wątek.Zazwyczaj używa się CreateThread funkcja tworzenia wątków.Mimo, że wątki są stosunkowo łatwe tworzenie i używanie, system operacyjny przydziela znaczną ilość czasu i innych zasobów do zarządzania nimi.Ponadto mimo że każdy wątek jest gwarantowane, otrzymują ten sam czas wykonania jako inny wątek na tym samym poziomie priorytetu, skojarzonym napowietrznych wymaga utworzenia wystarczająco dużych zadań.Zadania mniejsze lub bardziej szczegółowymi obciążenie, które jest skojarzone z współbieżności może przeważają nad Zaletą uruchomienia zadania równolegle.
Pule wątków są jednym ze sposobów zmniejszenia kosztów zarządzania wątku.Pule wątków niestandardowych i implementacji puli wątków dostarczonego przez interfejs API systemu Windows włączyć zarówno elementy pracy małych efektywnie uruchamiać równolegle.Pula wątków Windows przechowuje elementy pracy w kolejce first-in, first-out (FIFO).Każdy element roboczy jest uruchamiany w kolejności, w której został dodany do puli.
Runtime współbieżności implementuje kradzież pracy algorytm rozszerzyć FIFO, mechanizm planowania.Algorytm przenosi zadania, które jeszcze się nie rozpoczęły wątków, które są uruchamiane z elementów pracy.Choć algorytm kradzież pracy może równoważyć obciążenie pracą, może być przyczyną elementów pracy na zmianę kolejności.Ten proces zamawiania może spowodować element pracy do uruchamiania w innej kolejności niż Dowodzono.Jest to przydatne przy rekurencyjnych algorytmów, jeżeli istnieje lepsze szansa, że dane współużytkowany zadań nowsze niż wśród starszych.Uzyskiwanie nowych elementów do uruchomienia pierwszy oznacza mniej Chybienia w pamięci podręcznej i prawdopodobnie mniej błędów strony.
Z perspektywy systemu operacyjnego kradzież pracy jest nieuczciwej.Jednakże gdy aplikacja wykonuje algorytm lub zadania równolegle, uczciwości wśród podzadań nie zawsze znaczenia.To jak szybko zakończy się zadanie ogólnej.Dla innych algorytmów FIFO jest odpowiednią strategię planowania.
Zachowanie w różnych systemach operacyjnych
W systemie Windows XP i Windows Vista aplikacje używające Runtime współbieżności działają podobnie, chyba że sterta jest wydajność w systemie Windows Vista.
W systemie Windows 7 i Windows Server 2008 R2 dalsze system operacyjny obsługuje współbieżności i skalowalność.Na przykład te systemy operacyjne obsługują komputerów, które mają więcej niż 64 wątki sprzętu.Istniejących aplikacji, która korzysta z interfejsu API systemu Windows muszą zostać zmienione tak, aby korzystać z tych nowych funkcji.Aplikacja, która używa Runtime współbieżności automatycznie używa tych funkcji i nie wymagają modyfikacji.
https://msdn.microsoft.com/pl-pl/library/dd627187(v=vs.120)
Top
Porównanie obsługi współbieżności OpenMP
Runtime współbieżności umożliwia różne modele programowania.Modele te mogą nakładają się lub uzupełniają modeli innych bibliotek.W tej sekcji porównano Runtime współbieżności na OpenMP.
Model programowania OpenMP jest zdefiniowany przez otwarty standard i ma powiązania dobrze zdefiniowanych języków programowania Fortran, C i C++.OpenMP w wersji 2.0 i 2.5 są służącej do równoległego algorytmy, które są iteracyjne; oznacza to, że ich wykonywanie iteracji równolegle przez tablicę danych.OpenMP jest najbardziej efektywne, gdy stopień równoległości prostych jest ustalona, odpowiada dostępnych zasobów w systemie.OpenMP model jest szczególnie pasujący do high-performance computing, gdzie bardzo duże problemy obliczeniowej są rozłożone na zasoby przetwarzania pojedynczego komputera.W tym scenariuszu środowiska sprzętowego jest znany i autora można się spodziewać wyłącznego dostępu do przetwarzania danych zasobów, gdy wykonywane jest algorytm.
Jednakże inne, mniej ograniczonego środowisk komputerowych nie może pasuje do OpenMP.Na przykład problemy cykliczne (takich jak algorytm sortowanie szybkie lub wyszukiwanie drzewa danych) są trudniejsze do wykonania przy użyciu OpenMP.Runtime współbieżności uzupełnia możliwości OpenMP, zapewniając Równoległych desenie biblioteki (PPL) i Asynchronicznego biblioteki agenci.W odróżnieniu od OpenMP Runtime współbieżności zapewnia dynamiczne harmonogramu, która dostosowuje się do dostępnych zasobów i dostosowuje stopień równoległości prostych, jak zmienić obciążenia pracą.
Wiele funkcji w środowisku wykonawczym współbieżności może zostać przedłużony.Można również połączyć istniejące funkcje do redagowania nowych.Ponieważ OpenMP opiera się na dyrektyw kompilatora, nie można łatwo rozszerzone.
Aby uzyskać więcej informacji dotyczących sposobu porównuje współbieżności Runtime OpenMP i sposób migracji istniejącego kodu OpenMP, aby użyć Runtime współbieżności zobacz Migrowanie z OpenMP do współbieżności środowiska wykonawczego.
Top
Zobacz też
Informacje
Koncepcje
Współbieżność środowiska wykonawczego
Omówienie współbieżności środowiska wykonawczego
Biblioteka równoległych wzorców (PLL)
Biblioteka agentów asynchronicznych