background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Download "Изучаем Golang. Урок 9. Многопоточность. Горутины и каналы"

input logo icon
Video tags
|

Video tags

golang
голенг
урок по golang
development
howto
learnbasics
coding
programming
изучаемIT
программирование
разработка
golang tutorial for beginners
golang tutorial
learn golang
golang programming
урок
tutorial
изучаемit
Subtitles
|

Subtitles

subtitles menu arrow
  • ruRussian
Download
00:00:02
I’m continuing today we have a big topic
00:00:04
with the foot of the routine channel and it will be interesting, let’s
00:00:08
go to the first lesson, I focused
00:00:11
on the fact that the gong came out in 2009,
00:00:15
I’m talking about the fact that this is important, why
00:00:17
because it was around this
00:00:19
time that computers were used. became powerful, the
00:00:21
number of processors increased, the
00:00:23
clock frequency increased, the number of
00:00:26
cores increased, and so on, and around the same
00:00:29
time, in the house of 2007 and 2009, the
00:00:35
real benefits of multi-threaded
00:00:39
applications began
00:00:40
because there were a
00:00:42
lot of processors, I leafed through a lot not only in
00:00:45
server equipment but also in their
00:00:46
user equipment equipment and
00:00:51
multithreading began to make sense and the language
00:00:54
was created not so long ago and therefore it
00:00:57
simplifies the work with multithreading and
00:01:00
this multithreading is called go routine
00:01:04
to disk will make it difficult for the
00:01:08
Russian chest and
00:01:11
others but
00:01:23
what is chest and when we run
00:01:28
we when we run and so
00:01:34
we actually launch the chest and the
00:01:38
chest is launched and on the main thread
00:01:41
execution until the entry point is the main
00:01:44
thread has fallen and
00:01:47
we can create the
00:01:50
proceeds
00:01:52
from the main thread how to do this, we
00:01:56
create a method of some kind on any
00:01:58
that simply adds
00:02:02
this simply outputs something - then on the screen
00:02:04
let it be
00:02:10
he just accepts the input
00:02:13
while such sol it is on the screen all
00:02:17
this will be minus 7
00:02:19
nations a
00:02:21
simple function a simple method when
00:02:24
it goes to the game we can just
00:02:26
call it
00:02:27
we can just call it and here we pass
00:02:30
it became we call it is called
00:02:33
first by our fund by the printer, we will delete it and
00:02:37
then call the method, but to call this
00:02:40
routine, well, the head is
00:02:43
simply the keyword year before calling the exchange,
00:02:46
so
00:02:49
black will create a lightweight thread that it
00:02:53
will manage itself,
00:02:56
this
00:02:59
method called through the key method go
00:03:02
is called in a separate thread year
00:03:05
will create a separate thread and call it
00:03:12
in a separate thread without blocking the main
00:03:16
thread, that is, here we can write
00:03:20
some
00:03:24
example
00:03:26
5 seconds
00:03:29
before so that the method sleeps for 5 seconds then pours out
00:03:33
the words and here we can
00:03:36
write
00:03:40
count the duration
00:03:45
,
00:03:47
hit one, so we
00:03:50
call this with us, we would count to 5
00:03:54
faster than a second, why did
00:03:57
n’t this one volunteer now?
00:04:16
inns are created in this basically until he
00:04:19
waits for the execution of this wind so that he
00:04:23
waits we can fall asleep for example for
00:04:26
tests 2 seconds are given
00:04:30
to 2 seconds the main thread would not send
00:04:36
count to 5 win hallow and then
00:04:40
the program ends, that is, we called
00:04:43
this routine it fell asleep on for a second
00:04:46
they counted to five and the main thread
00:04:50
fell asleep the main thread fell asleep of a new type
00:04:53
continues to work because it
00:04:54
works in a separate thread in a separate
00:04:58
thread,
00:04:59
which means others run in the same
00:05:02
address space
00:05:04
so access to shared memory must
00:05:07
be synchronized must be
00:05:10
synchronized we'll talk about this in the
00:05:12
next lesson about the
00:05:15
synchronization primitive, according to the sign, go outside
00:05:17
and in fact that’s all that can be
00:05:20
said about the duck world and launching
00:05:23
separate threads, that is, you have a
00:05:25
method, you can run it in a
00:05:27
separate thread by writing a key spider
00:05:29
and it will work asynchronously
00:05:33
this method will be executed asynchronously with the
00:05:36
main folder in another thread
00:05:39
on the oak and
00:05:41
that’s all that can be said at the chest or
00:05:44
one such basic level, but we
00:05:47
probably have a
00:05:48
[ __ ] question and the question immediately arises:
00:05:50
how can the chest and we communicate with
00:05:53
each other, how to transfer data in general
00:05:56
from the main flow into the chest and others from the
00:05:59
chest and to the main flows and tongue
00:06:02
answers this question with channels in g
00:06:06
there are channels and this is such a tube between
00:06:10
anything between anything year the channel
00:06:15
is created by the keyword cleaning sensual
00:06:17
make former variable SIH
00:06:21
felt make we write that this is a channel and
00:06:24
type yes,
00:06:25
we created a channel to record something in the
00:06:29
channel to record that our channel
00:06:31
give it here we will record one in the channel
00:06:38
gave a
00:06:41
chance we will record it and a personal message that is,
00:06:45
here we write pulled the variable with the channel to us
00:06:48
further arrow arrow
00:06:51
this direction of data that is, if there is
00:06:54
an arrow here is a channel so we write to the
00:06:56
channel if an arrow is from a channel like for
00:06:59
example here like
00:07:13
this
00:07:16
we read from the channel to the arrow from the channel here and the arrow is the
00:07:20
channel and
00:07:23
here from the channel here we read Oscanova
00:07:26
and here we do not write to the channel and
00:07:29
to in fact, now we can count
00:07:33
again up to five or how many times and
00:07:36
now everything will be completed without slips,
00:07:38
why because we start reading from the channel
00:07:42
area,
00:07:49
we counted in one very easily, but we
00:07:54
forgot to
00:07:56
order
00:07:58
with him for a second
00:08:01
and even for 2 we run this for two seconds,
00:08:04
counted to one and now the
00:08:08
main thread has fallen asleep in these now
00:08:10
we will do 10 that belov 1 remove
00:08:14
counted ones and now the main
00:08:18
thread main duty routine is sleeping she is not
00:08:21
sleeping she is waiting for the data to appear in the channel
00:08:24
so only the data appears in the channel
00:08:27
she they are taken into account by us to the printer
00:08:29
displayed on the screen and the flow is completed,
00:08:31
so through the channel we can
00:08:34
wait for the
00:08:37
chest to complete and in this simple way we
00:08:41
just created a channel with the int type, we
00:08:44
can create a channel with the string type and
00:08:46
then
00:08:48
we and the testicle should get it, we
00:08:52
pass the string and
00:08:55
run counted units crisping 10
00:08:59
seconds, well, our chest is 50 seconds and the
00:09:01
main thread is waiting for data from the channels it is
00:09:04
waiting for data from the channel now it
00:09:06
has waited and we got the output hello this is
00:09:10
this printer and
00:09:12
they zid this is this content if you are 400
00:09:14
nova and
00:09:17
output and
00:09:24
since the channel and sending and receiving
00:09:28
block
00:09:31
blocks the flow until the other
00:09:34
country is ready this allows
00:09:36
chest and us to synchronize without
00:09:38
additional log off and race condition
00:09:41
and race condition
00:09:45
allows with the channel and also you can
00:09:48
take into account a lot of things sequentially
00:09:51
let's try to do this
00:09:56
function
00:10:06
average loop
00:10:09
from zero
00:10:17
falls asleep for a conventional 100 milliseconds
00:10:22
mysticism
00:10:24
after which it displays
00:10:26
the words hello
00:10:30
it calls the method the target attaches where
00:10:35
chlorine and
00:10:41
we remove the channel we transfer
00:10:45
the cycle here after which this channel and
00:10:52
after which
00:11:02
we can now
00:11:05
call the safe lol
00:11:08
transfer our channel there and
00:11:12
take into account this soon we
00:11:15
launch
00:11:17
we wait
00:11:24
for
00:11:27
one for a long time each time a few seconds to
00:11:31
hand over he launches the channel channel channel and
00:11:34
we get an error
00:11:38
we get an error
00:11:43
what we get is that he is a guru of teens
00:11:46
ASD-2
00:11:49
why is it just especially are we using
00:11:52
here just you got from the channel
00:12:03
we are launching we are launching the scene we are writing the channel
00:12:13
we are writing in exit the
00:12:16
variable s and a
00:12:21
colleague, for a change, then
00:12:24
we’ll figure it out for a change, we’ll assign a
00:12:26
value from channel c and output it
00:12:30
separately,
00:12:35
let’s figure out why we had
00:12:38
an error and
00:12:43
who am I because I’m running this in the
00:12:46
same thread and one hand program, well, I forgot,
00:12:48
but you see we go down and hello without
00:12:52
any routine not to the chest and when we
00:13:00
write to the channel in the same stream and start reading from the
00:13:03
channel we want a stream but there are
00:13:06
no other streams there is no stream that can
00:13:09
record something this channel the stream is locked
00:13:14
we are waiting so we have we will get a flow
00:13:18
if we now launch the entire hello in the
00:13:21
sternum, everything is
00:13:26
bad with
00:13:29
why because the same thing is that we
00:13:32
launch these different flows of
00:13:34
the ditch cannot be used in the
00:13:38
same under this, it is pointless to write and read the channel sleeve,
00:13:40
and
00:13:42
secondly the flows watch so it won’t
00:13:45
be possible to do it like that, it’s
00:13:46
trivial, not for the sucker of the flow,
00:13:51
that is, we call the cyclone, then we
00:13:54
write to the channel and wait for it to be taken into account from the
00:13:58
channel and finish, we wait until
00:14:01
say flat work, and
00:14:03
we can remove flow here, we
00:14:08
can do
00:14:12
int here, we have five times we can
00:14:17
send ours to the channel five times 5 times each,
00:14:22
so now we make
00:14:25
five screws and
00:14:30
launch we get from 0 to 4 if we
00:14:35
do 6 we get dazlom and
00:14:39
if d-dog why because we
00:14:42
read from the channel from there no one
00:14:45
writes anything and never they won’t write the needle
00:14:48
knows about it and in this such as a job
00:14:52
now it arises obviously the questions are that
00:14:55
how so you have what you need to know
00:14:57
how many times the
00:15:00
data from the channel is calculated here you will
00:15:04
need to know how much data the channel
00:15:06
gets and then read no more no
00:15:08
less and I will say that no, it’s not necessarily
00:15:13
so because you can operate on a channel,
00:15:17
namely, use a for
00:15:22
loop,
00:15:24
how it will work,
00:15:27
and
00:15:30
assignments range
00:15:33
of an tmp,
00:15:37
that is, we operate on a channel us
00:15:40
keyword emphasis further went further
00:15:43
our variable we initialize we
00:15:46
initialize with a value from the channel hot i
00:15:49
in range than, accordingly, he will
00:15:53
wait until they come there to this
00:15:59
we launch zero one two three four and fell
00:16:03
why we fell because we continue to
00:16:06
wait for data from the channel
00:16:09
we further that no one writes from there I
00:16:11
will go up to five times the score was recorded and more
00:16:15
no one writes anything there and the main
00:16:17
thread is still waiting for someone to
00:16:18
write there, one thing no one will ever
00:16:21
write anything again I’ve also finished Sarah
00:16:23
Logic and for this the channels can be
00:16:26
closed
00:16:28
and to
00:16:30
indicate the fact that there
00:16:34
will be no more data friend you stop giving me no
00:16:38
wait for me until the bottom we take and at the end of
00:16:43
the work we do claus x
00:16:46
that is, we close the channel and when we
00:16:49
close the channel we exit from here from
00:16:54
this cycle we will exit the rain I will close the channel
00:16:57
and there will be no more errors
00:17:00
zero one two three four and the
00:17:03
function is holding the knife we ​​closed channel and
00:17:07
channel and this is not the same as files
00:17:11
channels this is not the same as some kind of
00:17:14
fried forest in some principle the resource
00:17:16
does not need to always be closed you can
00:17:18
insert an open lesson we agree
00:17:21
it is put but closing the channel is interesting and
00:17:25
useful and the mechanics are in order to
00:17:29
manage
00:17:31
processes for receiving data from the grooves
00:17:35
up to also an important point:
00:17:39
you can’t send anything to a closed channel; if we send
00:17:42
anything to a closed channel, we will receive
00:17:45
a reminder about not as a separate type of
00:17:49
exception in the gang, the toughest one
00:17:54
can work with them, we will look at this in
00:17:56
one of the following lessons, therefore
00:17:58
closed channel you can’t write anything if
00:18:01
you try to
00:18:04
also
00:18:08
finger from a closed channel but you do
00:18:13
n’t subtract anything from there in this case 40
00:18:20
again you read
00:18:23
get the default value in the again
00:18:27
if there is a stream
00:18:32
with
00:18:34
eske and then subtract empty lines well the
00:18:38
default value for empty and old and
00:18:40
when we initialize the structure, its
00:18:43
fields get
00:18:45
cabbage 0
00:18:51
and
00:18:56
I would also like to parse with you the
00:18:59
select keyword,
00:19:01
it allows us to
00:19:05
take into account several channels and
00:19:09
thus do mode and spider mannequins,
00:19:12
a lot of communication
00:19:14
means the select keyword is
00:19:17
blocked
00:19:18
until then until some case is
00:19:21
executed,
00:19:23
we create a function
00:19:30
phone
00:19:32
function select you what we will do in it
00:19:36
we will launch an infinite loop in it
00:19:40
we despise now x is equal to zero
00:19:45
then we will launch an infinite loop preshov
00:19:47
select 600 case and here we took a channel with
00:19:52
data a channel with data and to
00:19:56
this channel with the data we will
00:19:58
send
00:19:59
we will send x and how the sums we will
00:20:03
add one and the second channel
00:20:06
which we will use is exit if
00:20:09
it came data to exit there and
00:20:13
finishing did not finish the execution of
00:20:17
our endless infinite loop and
00:20:19
exit
00:20:20
physically we should be a channel date
00:20:23
channel exit and these are all channels and covered
00:20:27
2 for
00:20:30
such an endless loop of this we
00:20:33
turned off the minutes select if we have
00:20:37
a case and this deduction came to us we
00:20:40
will leave Turkey if we didn’t come then we for
00:20:43
overwritten the data to the [ __ ] if someone
00:20:46
reads something from the date we will write down the given
00:20:49
date sharply functions we need to create a
00:20:58
date channel create an exit channel
00:21:01
after that
00:21:04
we need to eat now a function
00:21:07
that will read the date channel but
00:21:10
before that there
00:21:12
will be an important point I will now
00:21:14
create an anonymous function and just for
00:21:18
a minute and function like this
00:21:20
and do it routinely, so I created an
00:21:23
anonymous function
00:21:24
when just an anonymous function
00:21:26
is called and when you start it will be
00:21:29
called
00:21:30
now I’ll comment it out, we’ve
00:21:34
already discussed this in one of the lessons,
00:21:38
we run the function
00:21:40
when we get the lackey, this function
00:21:44
is called if I don’t substitute the new guy to the
00:21:47
keyword then this will become the chest and
00:21:49
it will begin to give or and now in this in
00:21:53
this group I create a method for and
00:21:58
convey let’s calculate and we will
00:22:02
subtract
00:22:03
from the channel and date
00:22:08
[music]
00:22:10
data 10
00:22:13
10 times we
00:22:15
take into account
00:22:17
when we subtracted 10 times we need sound
00:22:21
channel exit send code what
00:22:25
we say that we have finished we need the case
00:22:29
channel exit it will be an indication that the
00:22:33
data is large for more data is not
00:22:34
needed there will be no more data
00:22:37
but no one else a little more no one is going to read I’m
00:22:39
not going to read in principle you can drink more
00:22:42
stopped don’t see this x
00:22:45
we we indulge in the channel date channels where and
00:22:50
launches and
00:22:53
we have zero one two three four five
00:22:56
six seven eight nine that is, we
00:23:00
read the data ten times then we
00:23:04
send it to exit 0 here we have an
00:23:06
infinite loop and select if someone
00:23:10
reads data from date to from channel date
00:23:13
then we send X X to this channel and
00:23:17
add it as one if no one
00:23:20
reads from the date we look if the data is in the
00:23:24
channel and even if the data
00:23:27
channel appears exit we prince prince the line
00:23:30
and enter an infinite loop
00:23:32
if not here not there then there is no one
00:23:35
reading the data from the date and drink no one
00:23:38
writes anything we will sit and wait for
00:23:42
an eternity of
00:23:44
a month until someone any date records
00:23:47
the ride then it doesn’t come across to read or in
00:23:49
excel someone didn’t send anything and
00:23:52
among other things
00:23:54
if we wait it’s not necessary, here you can
00:23:58
make a cheap section
00:24:10
and the default function will be called if it didn’t work for us, or
00:24:13
something else, here we can essentially
00:24:20
describe the rating before Whiting and fall
00:24:23
asleep with two until, for a certain number of
00:24:28
milliseconds,
00:24:29
fall asleep and wait
00:24:32
again, and sold then start reading again
00:24:35
the data appeared or did not appear before the
00:24:43
cape, we sorted out the main things about the currency,
00:24:47
our next lesson will be devoted to the
00:24:48
synchronization primitive, today that’s
00:24:51
all, thank you very much for watching, like,
00:24:54
support the channel, write
00:24:56
comments,
00:24:57
yes, I also wanted to add something, you
00:25:00
asked for homework,
00:25:04
let’s try with you
00:25:08
try without synchronization primitives
00:25:13
to whom salary without
00:25:20
synchronization primitive that is, without the singa package
00:25:25
write
00:25:27
an asynchronous and crazy calculator
00:25:30
calculator on their chest that is, what that
00:25:34
it should take as input for then it
00:25:37
should take two plus two
00:25:39
three plus s 600 so on and
00:25:44
multiply 7 7 multiply by 87 by 7 to 9
00:25:49
divide by 3 and then run each expression
00:25:54
asynchronously, that is, calculate each expression
00:25:56
in the chest and
00:26:01
each expression, that is, I
00:26:04
must give it as input such a
00:26:07
piece, such a set of expressions, and
00:26:11
its result should be
00:26:16
like this line
00:26:19
499 or you can do it beautifully before
00:26:21
output it beautifully
00:26:25
as a result of payments like this like this
00:26:28
line
00:26:29
he should take the original expression and
00:26:32
add the answer to it like this
00:26:35
what does this calculator mean about
00:26:40
homework now let’s try to
00:26:42
do this it will work it won’t work that means how
00:26:44
to pass how to pass take take go to
00:26:48
getjar create an account there from not
00:26:50
created create
00:26:53
repositories are you
00:26:55
successful in transferring to this repository
00:26:58
write the code for this stone of the network where
00:27:03
cannons
00:27:04
twig
00:27:06
main branch to renamed century eat and
00:27:10
twig mine and create a record
00:27:14
on the tatami. it and and on the branch there will be a
00:27:17
calculator calculator and create a gender
00:27:20
request
00:27:22
calculate like an alka
00:27:25
calculator
00:27:26
was this the class you create
00:27:31
viewers recognized here create a branch in
00:27:34
this branch a calculator
00:27:37
write code for the committee eat and a branch
00:27:41
calculator and create a semi request
00:27:43
branches a calculator and and further telegram
00:27:48
after month
00:27:50
group where you go and
00:27:55
send
00:27:57
there a link to Paul's quest I go in
00:28:03
to take a shot of a view of a
00:28:06
virgin girlfriend
00:28:09
before you
00:28:12
can write such a
00:28:14
calculator on the chest in different ways and nah this is not a
00:28:17
trivial story Dasha an interesting
00:28:20
task there will be questions also come to
00:28:22
telegram we will discuss possible
00:28:26
solutions also boorish
00:28:29
Telegram is inconvenient, you can go to the VKontakte group
00:28:31
there, too, I’m there, send
00:28:34
the quest round there, we’ll also discuss it,
00:28:36
we’ve also done it for centuries, that’s
00:28:40
exactly it, thank you very much for
00:28:43
watching
00:28:46
bye

Description:

В этом видео мы поговорим про многопоточность: горутины и каналы в языке Go. В этой серии уроков мы научимся разрабатывать используя язык Golang. Начнем с азов и закончим полноценным приложением с API, бизнес логикой и базой данных. P.S. это последнее видео в котором отвратный звук. Я все купил для звука и теперь он будет гораздо лучше, уже почти закончил монтаж ролика про Apache Kafka. С радостью хочу вам представить, что я запускаю курс “Начальная подготовка” по языку Golang. Курс как для совсем начинающих в сфере IT, так и для тех, кто хочет просто изучить язык Go. Больше обо мне и курсах можно прочитать здесь: https://artofedu.org/ Больше информации есть в ролике на ютубе: https://www.youtube.com/watch?v=E0b0dmwf-6c На все вопросы могу ответить в Телеграм группе канала и в личных сообщениях. Урок 1. Начало. Веб-сервер в 3 строки в конце урока! https://www.youtube.com/watch?v=G6eZaX_lgbQ Урок 2. Основы. Продолжение. Циклы, ветвления https://www.youtube.com/watch?v=5MZWiUHdSBA Урок 3. Основы. Продолжение. Указатели, структуры, массивы и слайсы https://www.youtube.com/watch?v=0s3Jz8Y_cq8 Урок 4. Основы. Итератор for range и структура map https://www.youtube.com/watch?v=uixi3pH0fgw Урок 5. Основы. Функции и методы https://www.youtube.com/watch?v=NmNjOiKHQt4 Урок 6. Основы. Интерфейсы https://www.youtube.com/watch?v=vR-UVn-5AOs Урок 7. Основы. Ошибки https://www.youtube.com/watch?v=a3Byzdiey9Y Урок 8. Основы. Тестирование. Часть 1 https://www.youtube.com/watch?v=smJmTERC1cw Другие видео: Изучаем Python. Основы + Бонус: Пишем приложение на FastAPI https://www.youtube.com/watch?v=JTbNTllXJBk Разработка системы заметок на Python, Golang и микросервисы в 2021 году https://www.youtube.com/watch?v=Txi95RQPRP0 Как стать разработчиком. Часть 1 https://www.youtube.com/watch?v=tUQrrm3UcbI Что такое микросервисы за 200 секунд https://www.youtube.com/watch?v=Q99r7ssHrvU VK: https://vk.com/theartofdevel Telegram Group: https://t.me/theartofdevel Дружественный Golang чат: https://t.me/gogolang ---- Меня зовут Артур Карапетов и я занимаюсь всем, что связано с разработкой. Я создаю высоконагруженные информационные системы, стартапы, занимаюсь личным обучением людей в сфере разработки (программисты, аналитики, системные администраторы), также я помогаю компаниям и стартапам с обучением людей работать и повышением их квалификации, об этом можно почитать здесь: https://mitkadr.ru. На этом канале я выкладываю ролики на интересующие меня темы, здесь можно найти серию роликов про создание информационной системы с нуля, а также можно найти серию уроков по языкам, которые я люблю. Добро пожаловать и хорошего просмотра!

Preparing download options

popular icon
Popular
hd icon
HD video
audio icon
Only sound
total icon
All
* — If the video is playing in a new tab, go to it, then right-click on the video and select "Save video as..."
** — Link intended for online playback in specialized players

Questions about downloading video

mobile menu iconHow can I download "Изучаем Golang. Урок 9. Многопоточность. Горутины и каналы" video?mobile menu icon

  • http://unidownloader.com/ website is the best way to download a video or a separate audio track if you want to do without installing programs and extensions.

  • The UDL Helper extension is a convenient button that is seamlessly integrated into YouTube, Instagram and OK.ru sites for fast content download.

  • UDL Client program (for Windows) is the most powerful solution that supports more than 900 websites, social networks and video hosting sites, as well as any video quality that is available in the source.

  • UDL Lite is a really convenient way to access a website from your mobile device. With its help, you can easily download videos directly to your smartphone.

mobile menu iconWhich format of "Изучаем Golang. Урок 9. Многопоточность. Горутины и каналы" video should I choose?mobile menu icon

  • The best quality formats are FullHD (1080p), 2K (1440p), 4K (2160p) and 8K (4320p). The higher the resolution of your screen, the higher the video quality should be. However, there are other factors to consider: download speed, amount of free space, and device performance during playback.

mobile menu iconWhy does my computer freeze when loading a "Изучаем Golang. Урок 9. Многопоточность. Горутины и каналы" video?mobile menu icon

  • The browser/computer should not freeze completely! If this happens, please report it with a link to the video. Sometimes videos cannot be downloaded directly in a suitable format, so we have added the ability to convert the file to the desired format. In some cases, this process may actively use computer resources.

mobile menu iconHow can I download "Изучаем Golang. Урок 9. Многопоточность. Горутины и каналы" video to my phone?mobile menu icon

  • You can download a video to your smartphone using the website or the PWA application UDL Lite. It is also possible to send a download link via QR code using the UDL Helper extension.

mobile menu iconHow can I download an audio track (music) to MP3 "Изучаем Golang. Урок 9. Многопоточность. Горутины и каналы"?mobile menu icon

  • The most convenient way is to use the UDL Client program, which supports converting video to MP3 format. In some cases, MP3 can also be downloaded through the UDL Helper extension.

mobile menu iconHow can I save a frame from a video "Изучаем Golang. Урок 9. Многопоточность. Горутины и каналы"?mobile menu icon

  • This feature is available in the UDL Helper extension. Make sure that "Show the video snapshot button" is checked in the settings. A camera icon should appear in the lower right corner of the player to the left of the "Settings" icon. When you click on it, the current frame from the video will be saved to your computer in JPEG format.

mobile menu iconWhat's the price of all this stuff?mobile menu icon

  • It costs nothing. Our services are absolutely free for all users. There are no PRO subscriptions, no restrictions on the number or maximum length of downloaded videos.