All language subtitles for 003 Processes, Threads and the Thread Pool_Downloadly.ir_en

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian Download
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:01,400 --> 00:00:03,624 So, remember that in the last lecture, 2 00:00:03,624 --> 00:00:06,000 we talked about the Node architecture, 3 00:00:06,000 --> 00:00:07,670 where two fundamental parts 4 00:00:07,670 --> 00:00:10,810 are the thread pool and the event loop. 5 00:00:10,810 --> 00:00:12,630 So in this lecture, you're gonna learn 6 00:00:12,630 --> 00:00:14,619 all about threads and a thread pool. 7 00:00:14,619 --> 00:00:15,771 And in the next one, 8 00:00:15,771 --> 00:00:19,510 we will then dive deep into the event loop. 9 00:00:19,510 --> 00:00:20,883 So, let's get started. 10 00:00:22,230 --> 00:00:25,660 So, first off, when we use Node on a computer, 11 00:00:25,660 --> 00:00:28,210 it means that there is a Node process 12 00:00:28,210 --> 00:00:30,110 running on that computer. 13 00:00:30,110 --> 00:00:33,530 And the process is just a program in execution. 14 00:00:33,530 --> 00:00:35,900 And we already learned that Node.js 15 00:00:35,900 --> 00:00:38,490 is basically a C++ program, 16 00:00:38,490 --> 00:00:42,040 which will therefore start a process when it's running. 17 00:00:42,040 --> 00:00:44,100 This is important because in Node, 18 00:00:44,100 --> 00:00:46,980 we actually have access to a process variable, 19 00:00:46,980 --> 00:00:49,670 which we're gonna use later in this course. 20 00:00:49,670 --> 00:00:52,510 Now in that process, Node.js runs 21 00:00:52,510 --> 00:00:54,860 in a so called, single thread. 22 00:00:54,860 --> 00:00:58,641 And a thread is basically just a sequence of instructions. 23 00:00:58,641 --> 00:01:01,062 But it's not important to deeply understand 24 00:01:01,062 --> 00:01:03,690 what a thread or a process is. 25 00:01:03,690 --> 00:01:05,740 That is more about computer science. 26 00:01:05,740 --> 00:01:08,130 Just imagine a thread as being a box 27 00:01:08,130 --> 00:01:11,483 where our code is executed in a computer's processor. 28 00:01:12,750 --> 00:01:15,273 Now, what is important to understand here, 29 00:01:15,273 --> 00:01:19,100 is the fact that Node runs in just one thread, 30 00:01:19,100 --> 00:01:22,346 which makes it easy to block Node applications. 31 00:01:22,346 --> 00:01:25,273 And this is something that we talked about before, actually. 32 00:01:25,273 --> 00:01:28,650 But it's something really, really important to remember 33 00:01:28,650 --> 00:01:30,586 because this is one of the unique features 34 00:01:30,586 --> 00:01:33,029 that Node.js brings to the table. 35 00:01:33,029 --> 00:01:36,370 So, again, if you run your Node application, 36 00:01:36,370 --> 00:01:38,710 it'll run in just a single thread. 37 00:01:38,710 --> 00:01:41,834 No matter if you have 10 users or 10 million users 38 00:01:41,834 --> 00:01:45,030 accessing your application at the same. 39 00:01:45,030 --> 00:01:47,210 And so you need to be very careful 40 00:01:47,210 --> 00:01:49,610 about not blocking that thread. 41 00:01:49,610 --> 00:01:51,042 And we will of course, take care of that 42 00:01:51,042 --> 00:01:53,723 throughout the project in this course. 43 00:01:54,890 --> 00:01:57,010 Moving on, let's now quickly understand 44 00:01:57,010 --> 00:01:59,700 exactly what happens in a single thread 45 00:01:59,700 --> 00:02:02,040 when you start your Node application. 46 00:02:02,040 --> 00:02:04,730 So when the program is initialized, 47 00:02:04,730 --> 00:02:07,440 all the top level code is executed, 48 00:02:07,440 --> 00:02:09,060 which means all the code that is 49 00:02:09,060 --> 00:02:10,933 not inside any callback function. 50 00:02:12,020 --> 00:02:16,200 Also, all the modules that your app needs are required 51 00:02:16,200 --> 00:02:18,560 and all the callbacks are registered, 52 00:02:18,560 --> 00:02:20,300 just like the ones that we used 53 00:02:20,300 --> 00:02:23,390 for our HTP server in the Node Farm App. 54 00:02:23,390 --> 00:02:24,589 Remember that? 55 00:02:24,589 --> 00:02:29,589 Then after all that, the event loop finally starts running. 56 00:02:29,890 --> 00:02:33,000 And again, more about the event in loop in the next video. 57 00:02:33,000 --> 00:02:35,500 What you need to know for now is that the event loop 58 00:02:35,500 --> 00:02:38,410 is where most of the work is done in your app. 59 00:02:38,410 --> 00:02:42,600 So, it's really the heart of the entire Node architecture. 60 00:02:42,600 --> 00:02:46,640 But here is the catch, some tasks are actually too heavy. 61 00:02:46,640 --> 00:02:50,570 They are too expensive to be executed in the event loop 62 00:02:50,570 --> 00:02:53,510 because they would then block the single thread. 63 00:02:53,510 --> 00:02:56,770 And so, that's where the thread pool comes in, 64 00:02:56,770 --> 00:02:58,610 which just like the event loop, 65 00:02:58,610 --> 00:03:01,670 is provided to Node.js by the libuv library 66 00:03:01,670 --> 00:03:03,890 that we talked about before. 67 00:03:03,890 --> 00:03:07,140 So, the thread pool gives us four additional threads 68 00:03:07,140 --> 00:03:10,560 that are completely separate from the main single thread. 69 00:03:10,560 --> 00:03:14,170 And we can actually configure it up to 128 threads. 70 00:03:14,170 --> 00:03:16,670 But usually, these four are enough. 71 00:03:16,670 --> 00:03:19,630 So these threads together formed a thread pool. 72 00:03:19,630 --> 00:03:21,840 And the event loop can then automatically 73 00:03:21,840 --> 00:03:25,490 offload heavy tasks to the thread pool. 74 00:03:25,490 --> 00:03:28,490 And all this happens automatically behind the scenes. 75 00:03:28,490 --> 00:03:30,680 It's not us developers who decide 76 00:03:30,680 --> 00:03:33,253 what goes to thread pool and what doesn't. 77 00:03:34,780 --> 00:03:37,849 Now, the expensive tasks that do get offloaded 78 00:03:37,849 --> 00:03:41,390 are all operations dealing with files, 79 00:03:41,390 --> 00:03:44,898 everything related to cryptography, like caching passwords, 80 00:03:44,898 --> 00:03:48,860 then all compression stuff, and also DNS lookups, 81 00:03:48,860 --> 00:03:50,850 which basically matches web domains 82 00:03:50,850 --> 00:03:54,020 to their corresponding real IP addresses. 83 00:03:54,020 --> 00:03:55,500 So this is the stuff that would 84 00:03:55,500 --> 00:03:57,870 most easily block the main thread. 85 00:03:57,870 --> 00:04:00,460 And so, Node takes care of automatically 86 00:04:00,460 --> 00:04:02,890 offloading them into the thread pool, 87 00:04:02,890 --> 00:04:05,830 where they don't block our event loop. 88 00:04:05,830 --> 00:04:07,640 And that is the most important thing 89 00:04:07,640 --> 00:04:09,923 that I want you to retain from this video. 90 00:04:11,370 --> 00:04:15,693 So, let's now move on and talk about the event loop itself. 7193

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.