Teraz wykonamy kilka przykładów, aby wyjaśnić i zwiększyć zrozumienie równoległej pętli foreach w języku programowania C#.
Przykład 01: Dodawanie liczb do listy za pomocą równoległej pętli foreach w Ubuntu 20.04
W tym przykładzie napiszemy program C#, aby dodać liczby do listy za pomocą równoległej pętli foreach i zaznaczamy liczbę wątków jednocześnie przypisanych do każdego kroku. Będziemy musieli użyć różnych bibliotek, takich jak zadanie gwintowania i link, aby uzyskać dostęp do monitorowania i wydajności równoległości dla każdej pętli. Będziemy wykonywać ten przykład w Ubuntu 20.04 Środowisko.G
W powyższym kodzie wygenerowaliśmy listę za pomocą równoległej dla każdej pętli, w której liczby zostały przypisane do listy za pomocą funkcji zakresu. Następnie wydrukowaliśmy również identyfikatory wątków na każdym kroku, aby monitorować liczbę wątków używanych podczas przypisywania wartości do listy. Po uruchomieniu tego pliku programu w naszym terminalu wiersza poleceń otrzymamy następujące dane wyjściowe:
Dane wyjściowe sugeruje, że lista została przypisana 5 wartości, a podczas tego procesu zastosowano dwa wątki, które stworzyły różnicę czasową w wykonywaniu tego zadania. Jeśli uda nam się użyć prostej sekwencyjnej pętli foreach, zadanie zostało wykonane w jednym wątku, a wykonanie byłoby większe niż czas wykonywania równoległej pętli Foreach. Chociaż różni się to, ponieważ zależy to od wielkości danego zadania, ponieważ równoległa pętla foreach jest wygodniejsza dla większego rozmiaru zadania i przetwarzania, ponieważ dzieli zadanie na wiele wątków i działa na podejściu „podziel i podbij”.
Przykład 02: kontrolowanie liczby wątków za pomocą równoległej pętli foreach w Ubuntu 20.04
W tym przykładzie będziemy kontrolować tworzenie liczby wątków, gdy wykonana zostanie równoległa pętla foreach. Biblioteka wątków zadań daje nam dostęp do właściwości oznaczonej jako „maksymalny stopień równoległości”, która kontroluje operacje równoległe klasy opcji równoległej, a przypisanie wartości do tej właściwości określa liczbę operacji równoległych, które należy wykonać podczas programu. Ta właściwość jest wysyłana do równoległej pętli foreach za pośrednictwem argumentu. Utworzymy program C#, aby przypisać numery do listy i zdefiniować liczbę wątków do wykonania tego zadania.
Jak widzimy, całkowita liczba wątków użytych do wykonywania tego zadania wynosiła tylko 2, ponieważ naprawiliśmy tę liczbę, przypisując wartość do „maksymalnego stopnia równoległości.”W przypadku ogromnej liczby przetwarzania danych możemy zmieniać wartość przypisaną do maksymalnego stopnia równoległości; Pomoże nam to w równym i wydajnym podzieleniu mocy przetwarzania między podrzędnymi lub równoległymi operacjami.
Przykład 03: Lista drukowania ze zmiennymi ciągami za pomocą równoległej pętli foreach w programie C# w Ubuntu 20.04
W tym przykładzie będziemy drukować elementy z listy ze zmiennymi ciągu za pomocą równoległej pętli foreach w programie C# w Ubuntu 20.04 Środowisko. Najpierw zainicjujemy listę i przypisujemy jej wartości ręcznie, a następnie wydrukujemy wszystkie jej elementy jako wyjście za pomocą równoległej pętli Foreach.
W powyższym kodzie stworzyliśmy listę o nazwie kontynenty i dodaliśmy nazwy kontynentów do listy przed użyciem równoległości dla każdej pętli. Dodaliśmy bibliotekę zadań wątków, aby użyć równoległej pętli foreach dla naszego kodu. Metoda równoległego Foreach obejmuje listę i nowy obiekt jako parametr do czasowego przechowywania wartości dla każdej iteracji. Po wykonaniu tego pliku kodu w naszym terminalu wiersza poleceń otrzymamy listę nazw kontynentów, które zapisaliśmy wcześniej na naszej liście.
Przykład 04: Porównanie tradycyjnej pętli foreach z sekwencją za pomocą równoległej pętli foreach w C# w Ubuntu 20.04
W tym przykładzie będziemy porównywać tradycyjną pętlę foreach z jego sekwencyjną właściwością z równoległą pętlą foreach, wykonując podobne zadanie z obiema pętlami. Czas wykonywania obu pętli będzie inny ze względu na ich inne podejście do zadania. Wydrukujemy zawartość listy, która zostanie zainicjowana przed operacją, przy użyciu tradycyjnej pętli foreach z jego sekwencyjną właściwością i równolegle dla każdej pętli.
W powyższym programie C# używamy normalnej pętli Foreach i równoległej pętli Foreach i obliczamy czas potrzebny na wykonanie zadania przez obie pętle; Użyjemy klasy StopWatch z biblioteki „Diagnostics” języka programowania C#. Klasa StopWatch ma metodę „startNew ()”, która uruchamia stopwatch, a funkcja elapsed () służy do zatrzymania stopwatch. Obie te funkcje zostały dostępne, tworząc obiekt klasy StopWatch.
Dane wyjściowe pokazuje, że tradycyjna pętla Foreach zajęła mniej czasu w wykonywaniu zadania niż równoległa pętla Foreach. Powodem jest to, że wykonanie zadania najlepiej nadaje się do operacji pojedynczej wątku, a tworzenie wielu wątków dla tego zadania byłoby czasochłonne, ale gdyby lista obejmowałaby tysiące danych, czas wykonania byłby odwrotnie Ponieważ w tym scenariuszu zadanie byłoby wydajne i oszczędne czas. Tak więc, korzystając z równoległej pętli foreach, musimy obserwować rozmiar mocy przetwarzania wymaganej do tej operacji i rozważyć, która będzie odpowiednią pętlą dla tej operacji.
Wniosek:
Omówiliśmy równoległą pętlę foreach w języku programowania C#. W tym artykule omówiono znaczenie nazwy „równolegle”, a także praktyczne różnice między równoległą pętlą Foreach a standardową pętlą Foreach. Następnie wdrożyliśmy kilka przykładów równoległej pętli foreach w Ubuntu 20.04 Środowisko, aby zrozumieć większą jasność na ten temat. Doszliśmy do wniosku, że użycie równoległej pętli foreach musi być monitorowane podczas programowania, ponieważ może to zrobić w obu kierunkach ze względu na mechanizm gwintowania; zadanie jest podzielone, co byłoby czasochłonne w przypadku mniejszego zadania.