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

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
ceb Cebuano
chr Cherokee
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
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
my Myanmar (Burmese)
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian Download
pl Polish
pt-BR Portuguese (Brazil)
pt Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
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.