﻿1
00:00:01,400 --> 00:00:03,624
‫Dozent: Denken Sie daran, dass wir

2
00:00:03,624 --> 00:00:06,000
‫im letzten Vortrag über die Node-Architektur gesprochen

3
00:00:06,000 --> 00:00:07,670
‫haben, bei der

4
00:00:07,670 --> 00:00:10,810
‫zwei grundlegende Teile der Thread-Pool und die Ereignisschleife sind.

5
00:00:10,810 --> 00:00:12,630
‫In diesem Vortrag erfahren Sie

6
00:00:12,630 --> 00:00:14,619
‫alles über Threads und einen Thread-Pool.

7
00:00:14,619 --> 00:00:15,771
‫Und im

8
00:00:15,771 --> 00:00:19,510
‫nächsten tauchen wir dann tief in die Eventschleife ein.

9
00:00:19,510 --> 00:00:20,883
‫Also lasst uns anfangen.

10
00:00:22,230 --> 00:00:25,660
‫Wenn wir Node auf einem Computer verwenden, bedeutet

11
00:00:25,660 --> 00:00:28,210
‫dies zunächst, dass auf diesem Computer

12
00:00:28,210 --> 00:00:30,110
‫ein Node-Prozess ausgeführt wird.

13
00:00:30,110 --> 00:00:33,530
‫Und der Prozess ist nur ein Programm in der Ausführung.

14
00:00:33,530 --> 00:00:35,900
‫Und wir haben bereits gelernt, dass Node. js ist

15
00:00:35,900 --> 00:00:38,490
‫im Grunde ein C++-Programm, das

16
00:00:38,490 --> 00:00:42,040
‫daher einen Prozess startet, wenn es ausgeführt wird.

17
00:00:42,040 --> 00:00:44,100
‫Dies ist wichtig, da wir

18
00:00:44,100 --> 00:00:46,980
‫in Node tatsächlich Zugriff auf eine Prozessvariable haben,

19
00:00:46,980 --> 00:00:49,670
‫die wir später in diesem Kurs verwenden werden.

20
00:00:49,670 --> 00:00:52,510
‫Jetzt in diesem Prozess, Node. js läuft

21
00:00:52,510 --> 00:00:54,860
‫in einem sogenannten Single-Thread.

22
00:00:54,860 --> 00:00:58,641
‫Und ein Thread ist im Grunde nur eine Abfolge von Anweisungen.

23
00:00:58,641 --> 00:01:01,062
‫Es ist jedoch nicht wichtig, genau zu

24
00:01:01,062 --> 00:01:03,690
‫verstehen, was ein Thread oder ein Prozess ist.

25
00:01:03,690 --> 00:01:05,740
‫Das ist eher Informatik.

26
00:01:05,740 --> 00:01:08,130
‫Stellen Sie sich einen Thread als eine

27
00:01:08,130 --> 00:01:11,483
‫Box vor, in der unser Code im Prozessor eines Computers ausgeführt wird.

28
00:01:12,750 --> 00:01:15,273
‫Was hier wichtig zu verstehen

29
00:01:15,273 --> 00:01:19,100
‫ist, ist die Tatsache, dass Node in nur einem Thread

30
00:01:19,100 --> 00:01:22,346
‫ausgeführt wird, was das Blockieren von Node-Anwendungen erleichtert.

31
00:01:22,346 --> 00:01:25,273
‫Und das ist etwas, worüber wir schon früher gesprochen haben.

32
00:01:25,273 --> 00:01:28,650
‫Aber es ist wirklich wichtig, sich daran zu erinnern, denn

33
00:01:28,650 --> 00:01:30,586
‫dies ist eine der einzigartigen

34
00:01:30,586 --> 00:01:33,029
‫Funktionen von Node. js auf den Tisch bringt.

35
00:01:33,029 --> 00:01:36,370
‫Wenn Sie also Ihre Node-Anwendung ausführen, wird sie in

36
00:01:36,370 --> 00:01:38,710
‫nur einem einzigen Thread ausgeführt.

37
00:01:38,710 --> 00:01:41,834
‫Egal, ob Sie 10 Benutzer oder 10

38
00:01:41,834 --> 00:01:45,030
‫Millionen Benutzer haben, die gleichzeitig auf Ihre Anwendung zugreifen.

39
00:01:45,030 --> 00:01:47,210
‫Sie müssen also sehr vorsichtig

40
00:01:47,210 --> 00:01:49,610
‫sein, diesen Thread nicht zu blockieren.

41
00:01:49,610 --> 00:01:51,042
‫Und darum kümmern wir

42
00:01:51,042 --> 00:01:53,723
‫uns in diesem Kurs natürlich während des gesamten Projekts.

43
00:01:54,890 --> 00:01:57,010
‫Lassen Sie uns nun

44
00:01:57,010 --> 00:01:59,700
‫schnell verstehen, was in einem einzelnen Thread

45
00:01:59,700 --> 00:02:02,040
‫passiert, wenn Sie Ihre Node-Anwendung starten.

46
00:02:02,040 --> 00:02:04,730
‫Wenn das Programm initialisiert wird, wird der

47
00:02:04,730 --> 00:02:07,440
‫gesamte Code der obersten Ebene ausgeführt, dh der

48
00:02:07,440 --> 00:02:09,060
‫gesamte Code, der sich

49
00:02:09,060 --> 00:02:10,933
‫nicht in einer Callback-Funktion befindet.

50
00:02:12,020 --> 00:02:16,200
‫Außerdem werden alle Module benötigt, die Ihre App benötigt und alle

51
00:02:16,200 --> 00:02:18,560
‫Callbacks werden registriert, genau wie die,

52
00:02:18,560 --> 00:02:20,300
‫die wir für unseren

53
00:02:20,300 --> 00:02:23,390
‫HTP-Server in der Node Farm App verwendet haben.

54
00:02:23,390 --> 00:02:24,589
‫Erinnere dich daran?

55
00:02:24,589 --> 00:02:29,589
‫Nach all dem beginnt dann endlich die Ereignisschleife zu laufen.

56
00:02:29,890 --> 00:02:33,000
‫Und wieder mehr zum Event in Loop im nächsten Video.

57
00:02:33,000 --> 00:02:35,500
‫Was Sie vorerst wissen müssen, ist, dass in

58
00:02:35,500 --> 00:02:38,410
‫der Ereignisschleife die meiste Arbeit in Ihrer App erledigt wird.

59
00:02:38,410 --> 00:02:42,600
‫Es ist also wirklich das Herz der gesamten Node-Architektur.

60
00:02:42,600 --> 00:02:46,640
‫Aber hier ist der Haken, manche Aufgaben sind tatsächlich zu schwer.

61
00:02:46,640 --> 00:02:50,570
‫Sie sind zu teuer, um in der Ereignisschleife ausgeführt zu werden,

62
00:02:50,570 --> 00:02:53,510
‫da sie dann den einzelnen Thread blockieren würden.

63
00:02:53,510 --> 00:02:56,770
‫Hier kommt also der Thread-Pool ins Spiel,

64
00:02:56,770 --> 00:02:58,610
‫der ebenso wie die

65
00:02:58,610 --> 00:03:01,670
‫Ereignisschleife Node. js von der libuv-Bibliothek,

66
00:03:01,670 --> 00:03:03,890
‫über die wir zuvor gesprochen haben.

67
00:03:03,890 --> 00:03:07,140
‫Der Thread-Pool bietet uns also vier zusätzliche

68
00:03:07,140 --> 00:03:10,560
‫Threads, die vollständig vom einzelnen Hauptthread getrennt sind.

69
00:03:10,560 --> 00:03:14,170
‫Und wir können es tatsächlich auf bis zu 128 Threads konfigurieren.

70
00:03:14,170 --> 00:03:16,670
‫Aber normalerweise reichen diese vier.

71
00:03:16,670 --> 00:03:19,630
‫Diese Fäden bildeten also zusammen einen Fadenpool.

72
00:03:19,630 --> 00:03:21,840
‫Und die Ereignisschleife kann

73
00:03:21,840 --> 00:03:25,490
‫dann automatisch schwere Aufgaben in den Thread-Pool auslagern.

74
00:03:25,490 --> 00:03:28,490
‫Und das alles geschieht automatisch hinter den Kulissen.

75
00:03:28,490 --> 00:03:30,680
‫Es sind nicht wir Entwickler, die

76
00:03:30,680 --> 00:03:33,253
‫entscheiden, was in den Thread-Pool geht und was nicht.

77
00:03:34,780 --> 00:03:37,849
‫Jetzt sind die teuren Aufgaben, die ausgelagert

78
00:03:37,849 --> 00:03:41,390
‫werden, alle Operationen, die sich mit Dateien befassen,

79
00:03:41,390 --> 00:03:44,898
‫alles, was mit Kryptographie zu tun hat, wie

80
00:03:44,898 --> 00:03:48,860
‫das Caching von Passwörtern, dann alle Komprimierungssachen und auch

81
00:03:48,860 --> 00:03:50,850
‫DNS-Lookups, die im Grunde

82
00:03:50,850 --> 00:03:54,020
‫Web-Domains mit ihren entsprechenden echten IP-Adressen abgleichen.

83
00:03:54,020 --> 00:03:55,500
‫Dies ist also das

84
00:03:55,500 --> 00:03:57,870
‫Zeug, das den Hauptthread am leichtesten blockieren würde.

85
00:03:57,870 --> 00:04:00,460
‫Node sorgt also dafür, dass sie

86
00:04:00,460 --> 00:04:02,890
‫automatisch in den Thread-Pool ausgelagert

87
00:04:02,890 --> 00:04:05,830
‫werden, wo sie unsere Ereignisschleife nicht blockieren.

88
00:04:05,830 --> 00:04:07,640
‫Und das ist das Wichtigste, was

89
00:04:07,640 --> 00:04:09,923
‫ich möchte, dass Sie von diesem Video behalten.

90
00:04:11,370 --> 00:04:15,693
‫Lassen Sie uns nun weitermachen und über die Ereignisschleife selbst sprechen.

