‫Willkommen zurück und in diesem Video werden wir uns mit Threads befassen und werden daher nur das grundlegende Konzept von
‫Threads ausführen, in dem Sie sehen, wie Sie einen Thread erstellen und wie Sie mehrere Threads
‫erstellen.
‫Beginnen wir also mit der Verwendung der rechten Zeile der Konsole auf diese spezielle Weise.
‫Also werde ich mehrere Welten erschaffen, zum Beispiel vier davon, und ich werde hallo, welt
‫eins, hallo, welt zwei, drei und vier sagen.
‫Das sind also die Welten.
‫Wenn wir sie ausführen, brauchen wir natürlich zunächst Konsolen-Reline.
‫So bleibt die Konsole geöffnet und bleibt wach.
‫Wenn wir sie betreiben, dann ist es sehr einfach, was passieren wird.
‫Also drucken sie Hello World viermal auf dem Bildschirm aus und wir haben eine Welt eins, zwei, drei
‫und vier.
‫Gut.
‫Das ist also nichts Neues.
‫Das haben wir schon oft gesehen.
‫Es gibt etwas namens thread, eine Klasse namens thread.
‫Und wenn wir es verwenden möchten, müssen wir den Threading-Namespace verwenden.
‫Also mit System Dot Threading und das war's.
‫Jetzt können wir also Threads verwenden, damit ich die Thread-Klasse verwenden und, wie Sie sehen können, einen Thread erstellen
‫und steuern, seine Prioritäten festlegen und seinen Status abrufen können.
‫Was wir jetzt also tun können, ist beispielsweise Threads zu verwenden, die für eine begrenzte Zeit schlafen.
‫Sagen wir also für 1000 Millisekunden.
‫Das wird also tun, ist, dass es unser gesamtes Programm oder unseren Thread in diesem Fall, die Hauptbedrohung oder
‫die Bedrohung, in der es sich befindet, für eine Sekunde anhält, nachdem das Wort Eins auf dem Bildschirm gedruckt wurde.
‫Und das können wir tatsächlich nach jeder einzelnen Aussage tun.
‫Also werde ich sagen, schlafe einfach für eine bestimmte Zeit.
‫Und da sind wir.
‫Hallo.
‫Wir sind eins, zwei, drei und vier.
‫Es stoppt also, wenn ich darauf klicke.
‫Aber im Allgemeinen können Sie sehen, dass es eine Sekunde gewartet hat und nach dieser Sekunde das nächste gedruckt wird.
‫Was es einfach tut, es stoppt wirklich den gesamten Thread, so dass die aktuelle Bedrohung für eine bestimmte oder angegebene
‫Anzahl von Millisekunden ausgesetzt wird.
‫Das können Sie also tun, wenn Sie nach einer bestimmten Zeit etwas tun möchten.
‫Aber seien Sie sich bewusst, dass dies die Hauptbedrohung wirklich stoppt.
‫Also nichts was zu tun sein muss, sagen wir, im UI-Thread kann getan werden.
‫Wir verwenden hier keine Benutzeroberfläche.
‫In diesem Fall verwenden wir eine Konsolenanwendung.
‫Wenn Sie jedoch beispielsweise WP verwenden, um eine Benutzeroberfläche zu erstellen, und Sie den Hauptthread eine Sekunde lang parsen, bedeutet dies,
‫dass die Benutzeroberfläche eine ganze Sekunde lang nicht reagiert.
‫Und das ist etwas, das der Benutzer nicht will.
‫Und das wird ein sehr schlechtes Verhalten sein, das Sie nicht tun sollten.
‫Aber das ist im Allgemeinen nur für Sie, um zu verstehen, was Sie mit Threads hier tun können, richtig.
‫Sie können also für eine bestimmte Zeit eine Bedrohung darstellen.
‫Aber wir verwenden nur einen Thread.
‫Es ist die Hauptbedrohung.
‫Und wenn Sie mehr darüber erfahren möchten, müssen Sie debuggen.
‫Und dazu fügen wir hier einen Punkt hinzu.
‫Also nur zum Debug-Punkt, an dem Sie einfach auf diesen Balken hier links drücken, sagen wir, fügen Sie in Zeile
‫neun hinzu, wo die Hauptmethode beginnt, und dann starten Sie das Programm und wie Sie sehen, wird nichts angezeigt, da es
‫genau hier pausiert .
‫Da sind wir also aktuell.
‫Dort ist der Cursor.
‫Und um jetzt die Aufgaben zu sehen, müssen wir zu Debug-Fenstern gehen und hier Bedrohungen auswählen.
‫Oder Sie könnten die Steuerung alle H drücken.
‫Also eröffne ich Threads.
‫Und wie Sie sehen, schweben sie jetzt für mich und ich werde sie hier auf der linken Seite
‫platzieren.
‫Und jetzt können Sie die laufenden Threads sehen.
‫Und in unserem Fall sehen wir nur den Hauptthread.
‫Es gibt also nur einen Thread und er hat eine verwaltete Idee von Null.
‫Das ist also unsere Hauptbedrohung und im Allgemeinen macht sie alles, was zu unserer Hauptmethode gehört.
‫Also wenn ich zum nächsten Schritt gehe.
‫Wie Sie sehen, sind wir immer noch im Hauptthread und warten eine Sekunde, wir sehen, wie die Welt tatsächlich, wenn wir sie
‫öffnen, sie sehen kann.
‫Jetzt ist es eine totale Welt.
‫Drittens, wir schlafen eine Sekunde lang und dann wartet es stundenlang auf den nächsten Schritt, sodass Sie 10 haben können, um zum
‫nächsten Schritt zu gehen.
‫Und dann wird Helliwell nur eine Sekunde später angezeigt.
‫Ja, dafür sind wir alle.
‫Und dann kommt diese rote Linie.
‫Also drücke ich jetzt einfach so etwas wie Enter oder was auch immer und hier und gehe zum nächsten Schritt.
‫Und wie Sie sehen, befinden wir uns immer noch in der Hauptgefahr.
‫Und unser Programm schließt, also keine Bedrohung mehr, das ist gut und so, aber das ist nur unsere Hauptbedrohung und das ist
‫ein bisschen langweilig.
‫Wir wollen sehen, wie man Threads erstellt, und dafür sind wir hier.
‫Lassen Sie uns also selbst mehrere Bedrohungen erstellen, denn was hier passiert, ist, dass dies
‫nacheinander erfolgt.
‫Also Schritt für Schritt, eine Reihe nach der anderen.
‫Aber wenn wir Dinge parallel machen wollen, können wir unseren eigenen Thread erstellen, weil wir nicht wollen, dass er
‫im Haupt-Thread läuft.
‫Aber wir wollten parallel laufen.
‫Was ich also tun werde, ist, hier eine neue Bedrohung zu schaffen.
‫Ich sage nur neu, dann nenne ich es Drohung.
‫Also verwende ich hier nur die Bedrohungsklausel.
‫Und Sie brauchen wieder Klammern und Klammern.
‫Und nach diesen Klammern, der zweiten hier, verwenden Sie gleiche und größere Sinus- und geschweifte Klammern.
‫Und dann, nachdem die Klammer hier geschlossen wurde, müssen Sie beginnen.
‫So startest du einen Thread.
‫Also habe ich einen neuen Thread erstellt und der geht gleich los, weil ich hier start aufrufe.
‫Das ist nur die start-Methode ruft uns das Betriebssystem auf, um den Status der aktuellen Instanz in
‫den Thread-Status running zu ändern.
‫Dieser Thread wird also diesen Thread-Zustand laufen lassen, was bedeutet, dass er einfach alles ausführt, was sich
‫in seinen geschweiften Klammern befindet.
‫Hier können wir unseren Code hinzufügen, den wir ausführen möchten, wenn diese Bedrohung aufgerufen wird.
‫Sagen wir also, dieser Thread hier ist unser erster Thread.
‫Also schreibe ich einfach etwas wie Thread eins, CW-Thread eins.
‫Und obendrein werde ich noch eine Sekunde schlafen.
‫Schlafen Sie also 1000 Millisekunden, was einer Sekunde entspricht.
‫Das ist es, was dieser Thread tun wird.
‫Und was ich tun werde, ist, mehrere Threads darunter zu positionieren.
‫Also Faden eins, zwei, drei und vier.
‫Also werde ich diese umbenennen und auskommentieren.
‫Die, die wir vorher hatten, also die rechten Zeilen der Konsole und jetzt lassen Sie es uns ausführen.
‫Und da sind wir, wie Sie sehen können, es kam alle gleichzeitig hoch, also wartete es eine Sekunde
‫und dann kamen alle gleichzeitig hoch.
‫Was war da also los?
‫Lassen Sie mich hier auf diesen Punkt eingehen und vielleicht auf den Punkt.
‫Ja, genau dort.
‫Also lassen Sie es uns noch einmal ausführen.
‫Jetzt sehen wir, dass unser Programm genau hier stoppt, also dort, wo es ist,
‫aber gleichzeitig hier im Thread-Fenster hier unten sehen Sie, dass bereits zwei Threads geöffnet sind und ein Worker-Thread ohne
‫Namen.
‫Und eine weitere Arbeiterbedrohung ohne Namen.
‫Wir haben also diese neue Bedrohung, die bereits läuft.
‫Und dann wird auch eine der anderen Bedrohungen geöffnet.
‫Und wie Sie sehen können, auch die Hauptbedrohung.
‫Es gibt also drei Bedrohungen gleichzeitig.
‫Kommen wir nun zum nächsten Schritt.
‫Wie Sie sehen, gibt es an diesem Punkt plötzlich vier Bedrohungen.
‫Und das sind die vierten, die wir hier haben.
‫Als der erste anfing, war vielleicht nur der zweite schon fertig, aber die anderen waren noch nicht
‫fertig.
‫Und jetzt, an dem Punkt, an dem die Bedrohung nach Ablauf einer Millisekunde oder noch weniger tausend Millisekunden überstreicht, können
‫Sie sehen, dass die anderen Bedrohungen bereits begonnen haben.
‫Wir haben also vier Threads gleichzeitig laufen.
‫Wir haben hier also eine Multi-Threading-Lösung.
‫Und wenn ich den nächsten Schritt mache, nun, wie Sie sehen, werden Bedrohung zwei, drei und vier bereits angezeigt.
‫Aber wie Sie sehen, wird die rechte Konsole Bedrohung eins noch nicht angezeigt.
‫Sie laufen also parallel, sind aber nicht ganz genau, wie Sie sehen können.
‫Daher kann es zu geringfügigen Unterschieden in der Zeit, in der sie ausgeführt werden müssen, kommen.
‫Also gehe ich zum nächsten Schritt wie diesem Weg hier.
‫Und wie Sie jetzt sehen können, ist auch Bedrohung eins erledigt.
‫Also trotz der Drohungen.
‫Sind hier in einer bestimmten Reihenfolge, in meinem Code werden sie mehr oder weniger gleichzeitig gestartet und wie Sie
‫sehen, muss dies nicht in der genauen Reihenfolge sein, wie wir dachten.
‫Es wird also nicht genau in der Reihenfolge fertig, in der wir sie hier positioniert haben.
‫Aber basierend darauf, wie schnell sie den Code fertigstellen oder ausführen konnten.
‫So kann es vorkommen, dass dieser Code etwas länger braucht als dieser oder viel länger als der andere.
‫Das ist es, was Sie daraus machen müssen, damit Sie mit Bedrohungen arbeiten können, aber Sie müssen
‫sehr, sehr vorsichtig sein, da möglicherweise mehrere Dinge schief gehen können.
‫Und ich werde einige davon behandeln und ich werde es Ihnen zeigen oder geben und ich werde einige davon
‫behandeln.
‫Und ich werde auch Links mit Ihnen teilen.
‫Da können wir noch viel mehr hineinlesen.
‫Das ist also die Grundidee, wie man Bedrohungen erzeugt.
‫Wie Sie sehen, können Sie die Dinge so einrichten.
‫Bedrohungen sind also im Allgemeinen eine kleine Arbeit oder eine Arbeit, die ausgeführt wird, und Sie können
‫mehrere Dinge gleichzeitig ausführen, wenn Sie mehrere Kurse in Ihrem Prozessor haben.
‫Nehmen wir also an, Sie haben einen Vierkernprozessor, dann können vier Threads oder vier Prozessoren
‫gleichzeitig ausgeführt werden.
‫Wenn Sie, sagen wir, nur einen Prozessor haben, dann kann immer nur ein Thread oder eine Aufgabe gleichzeitig ausgeführt werden, wird
‫es nie passieren, dass sie parallel ausgeführt werden, weil dieser eine Prozessor immer nur eine bestimmte Sache
‫gleichzeitig macht.
‫Das bedeutet, dass Sie mit mehreren Bedrohungen arbeiten können, wenn Sie wissen, dass Sie mit einem
‫Multicore-Prozessor arbeiten oder Ihre Anwendung auf einem Multicore-Prozessor ausgeführt wird.
‫Sonst stoßen Sie auf Probleme.
‫Aber im Allgemeinen funktioniert es, wenn Sie nur einen Kern haben, dann wird der Hauptthread ausgeführt.
‫Und nur wenn die Hauptbedrohung untätig ist, wird sie weitermachen und andere Dinge tun, damit sie keine anderen Bedrohungen
‫ausführt.
‫Nehmen wir an, Sie haben eine Benutzeroberfläche und auf dieser Benutzeroberfläche zeigen Sie nur Dinge an, Sie haben eine Schaltfläche.
‫Wenn Sie dann mit der Maus über die Schaltfläche fahren, ändert sie ihr Aussehen, so etwas.
‫Das ist etwas, das von der Hauptbedrohung gemacht wird.
‫Aber wenn die Hauptbedrohung nicht beschäftigt ist, werden die anderen Bedrohungen gestartet.
‫Wenn Sie also etwas haben, das im Hintergrund ausgeführt werden soll, wird dies immer dann getan, wenn Bedrohung
‫eins, die Hauptbedrohung nicht beschäftigt ist oder dieses Jahr tatsächlich null bedroht ist.
‫Es geht also um Drohungen.
‫Und wir werden uns natürlich noch ein wenig mit Bedrohungen befassen.
‫Aber im Allgemeinen wollte ich Ihnen das für den Anfang zeigen.