C# Multithreading

C# Multithreading
Mówi się, że wątek jest lekkim procesem, zadaniem lub ścieżką wykonania dowolnego kodu lub programu. Wątki są używane do wykonywania określonego zadania lub zadania i kontroli. Pojęcie multitreadingu pojawia się, gdy dzielimy duży wątek na małe wątki, aby wykonali jednocześnie. W ten sposób można zarządzać obciążeniem i złożonością można uniknąć. W ramach programowania C# otrzymaliśmy „system.Gwintowanie.Klasa wątku ”do wykonywania multitReading za pomocą jego przydatnych funkcji. Ten artykuł jest dla każdego użytkownika C#, który nie ma doświadczenia w zakresie wielowy i chce nauczyć się swoich podstaw. Zacznijmy teraz.

Przykład nr 01: Główny wątek

Możesz zweryfikować obecny katalog roboczy do przeszukania nowo wygenerowanego pliku. Otwórz nowy plik C# w dowolnym z dostępnych redaktorów z Ubuntu 20.04 System. Otworzyliśmy go w ramach edytora „tekstu”, ponieważ jest bardzo wygodny w użyciu zarówno dla początkujących, jak i ekspertów. Jak sugeruje temat, będziemy omawiać koncepcję wielowy. Kiedy tworzymy obiekt klasy „Wątek”, tworzymy wątek dziecięcy aktualnie wykonujący wątek. Jeśli chcesz użyć obiektu do określenia nazwy wątku nadrzędnego, musisz użyć właściwości „CurrentThread” klasy wątku.

Zatem, w naszym pierwszym przykładzie, będziemy patrzeć na właściwość „bieżąceThread” klasy wątku C#. Rozpoczynamy nasz pierwszy przykładowy kod z inicjalizacją biblioteki „systemu” i „systemu.Klasa gwintowania ”. Stworzyliśmy przestrzeń nazw o nazwie „MultiTitread” i stworzyliśmy w niej klasę „wątek”. Funkcja Main () tej klasy rozpoczęto od inicjalizacji obiektu klasy „wątków” podczas korzystania z właściwości „CurrentThread”. Teraz obiekt wskazuje na wątek nadrzędny.

Używamy obiektu wątku nadrzędnego „T” do wywołania właściwości „Nazwa” klasy wątku, aby uzyskać nazwę bieżącego wątku I.mi. Wątek główny (). Podaliśmy mu nazwę „główną” zgodnie z poniższym kodem. Funkcja WriteLine () z klasy konsoli służy do wyświetlania nazwy wątku nadrzędnego na naszym ekranie terminalu, wywołując właściwość „Nazwa” przez obiekt „T” klasy wątku.

Pierwszym krokiem po zapisaniu naszego kodu jest skompilowanie kodu C#. W tym systemie musi mieć wbudowany kompilator C# „MCS”. Po skompilowaniu tego pliku z „MCS” plik „exe” zostanie automatycznie wygenerowany w bieżącym katalogu roboczym Ubuntu 20.04. Musimy użyć tego pliku „exe”, aby wykonać kod z instrukcją wykonania „mono” dla C#. Po uruchomieniu odkryliśmy, że wątek „główny” działa.

Przykład nr 02: Utwórz wątek dziecięcy

Rzućmy okiem na stworzenie nowego wątku za pomocą jakiejś „niestatycznej” funkcji danych w kodzie. Do tego zastosowaliśmy tę samą strukturę kodu C# i.mi. użycie biblioteki „systemu” i „systemu.Klasa gwintowania ”. Stworzyliśmy dwie klasy I.mi. Mythread i nowy. Wykonanie tego kodu zostanie uruchomione z nowej klasy, ponieważ zawiera wątek funkcyjny Main (). Konsola.Instrukcje pisarzy () pokaże nam, że funkcja main () działa.

Następnie stworzono obiekt „T1” klasy „Mythread”. To tworzenie obiektu nie oznacza, że ​​utworzyliśmy obiekt wątku. Ten obiekt jest wykorzystywany do wywoływania funkcji klasy Mythread. Obiekt klasy wątków „T” został utworzony w celu utworzenia nowego wątku. Podczas gdy właściwość ThreadStart tej klasy wątków została użyta do rozpoczęcia funkcji „Wątka” z klasy „Mythread” jako nowego wątku.

Obiekt „T1” wywołuje swoją funkcję w parametrach funkcji „ThreadStart” jako początek nowego wątku. Musisz użyć obiektu „T”, aby wywołać funkcję „Start” klasy wątku, aby rozpocząć wykonywanie nowego wątku. Tak więc funkcja Threading () klasy Mythread zostanie wykonana. Jest to dla pętli, zostanie wykonane 5 razy, pokazując, że funkcja wątku działa. Kod jest teraz zakończony. Zobaczmy, jak to działa.

Po skompilowaniu i uruchomieniu naszych plików C# „CS” i „EXE”, mamy wyjście Phise. Wątek dziecięcy z klasy „Mythread” został wykonany 5 razy, zgodnie z pętlą „for”.

Przykład nr 03: Więcej niż jeden wątek

Powyższy przykład dotyczył tworzenia jednego wątku. W tym przykładzie omówimy użycie funkcji statycznych do utworzenia więcej niż 1 dziecięce wątku w programie. Więc stworzyliśmy dwie klasy o tych samych nazwiskach I.mi. Mythread i nowy. Nowa klasa zawiera jedyną metodę main (), która jest używana do tworzenia dwóch obiektów T1 i T2 dla klasy wątków, aby utworzyć nowe wątki dziecięce.

Te obiekty używają funkcji Threading1 () i Threading2 () klasy Mythread, aby utworzyć je jako nowe wątki dziecięce. Funkcja „start ()” klasy wątku została użyta do uruchamiania funkcji Threading1 () i Threading2 () za pomocą obiektów wątku T1 i T2. Ponieważ obie funkcje wątków są statyczne, drugiego wątku nie można uruchomić, dopóki pierwszy nie zakończy się wykonaniem. Oba wątki wykonały swoje instrukcje 3 razy, a kod zostanie zakończony.

Po uruchomieniu tego skompilowanego kodu wyjście pokazuje osobno wykonanie obu wątków.

Przykład nr 04: Przeryp wątek

Klasa wątków ma funkcję abort () do zakończenia wątków. Wykorzystuje kątarkę do wykonywania zakończenia. Spójrzmy na to, tworząc dwie klasy, Mythread i nowe. Funkcja Main () rozpoczęła się od obiektu „t” dla klasy Mythread z nazwą „Wątek”.

Konstruktor klasy Mythread zaczął uruchomić i zainicjował nowy wątek dziecięcy z obiektem „T1” klasy „T1” przy użyciu funkcji „Starthread” w swoich parametrach. Nazwa została przypisana do właściwości nazwy, a wątek się rozpoczął. Funkcje wątku „Starthread” zaczynają się od instrukcji „TRY-Catch”. Instrukcja „spróbuj” będzie kontynuowana, aż moduł wartości w jego pętli przez 7 będzie równy 0. Tam, gdzie nastąpi wyjątek, instrukcja Catch () rzuci wyjątek ABROORT.

Po uruchomieniu tego kodu wykonaliśmy wątek wykonany do wartości 49 i zakończony w kodzie 300. Wątek został przerwany z powodu instrukcji „If” i konsoli.WriteLine () instrukcja przed oświadczeniem Catch ().

Wniosek

Ten przewodnik jest niezbędny dla każdego użytkownika C#, który chce nauczyć się podstaw wielowy. Dokładnie wyjaśniliśmy użycie klasy wątków w C#, aby utworzyć wątki i nazwać je bieżącym wątkiem i właściwością „Nazwa”. Omówiliśmy użycie tworzenia obiektów klasy „wątków” do utworzenia pojedynczego wątku lub wielu wątków na raz i rozpoczęcie ich od funkcji „Start” klasy wątków. Widzieliśmy również, jak używać funkcji abort () w kodzie C# do zakończenia wątku za pomocą instrukcji TRY-Catch w kodzie.