Тёмный

Async vs Isolates | Decoding Flutter 

Flutter
Подписаться 581 тыс.
Просмотров 126 тыс.
50% 1

How come a function janks the UI thread even though it's async? What are the differences between async and isolates? Learn what the distinctions are between these two processing methods, how they work, and when one may be preferable to the other.
Leave us suggestions for code to unravel in the comments below!
Watch more Decoding Flutter episodes → goo.gle/Decodin...
Don’t miss an episode, subscribe to Flutter → goo.gle/FlutterYT
Get started with Flutter → goo.gle/Flutter
Learn more about the Dart Language → goo.gle/2YF9OCi
#DecodingFlutter #Flutter #Developer

Опубликовано:

 

2 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 164   
@AdrianBoyko
@AdrianBoyko 3 года назад
To demonstrate isolates, you should have had a second Filip sitting next to you staring at the cell phone while you continued talking to us.
@bramv1984
@bramv1984 3 года назад
I was actually expecting that to happen 😂
@GustavoRodrigues
@GustavoRodrigues 3 года назад
now filip will have to re-record this video.
@ivanyoed
@ivanyoed 3 года назад
Great comment XD
@mruduladdipalli5417
@mruduladdipalli5417 3 года назад
Same thought , 😂
@ivanyoed
@ivanyoed 3 года назад
and then tell the first Filip (the ReceivePort) through a SendPort what the message was.
@FlutterMapp
@FlutterMapp 3 года назад
Flutter community is growing bigger everyday.
@RiwenX
@RiwenX 3 года назад
I have a sense soon there will be a demand for experienced Flutter devs.
@FlutterMapp
@FlutterMapp 3 года назад
@@RiwenX This is very true Riwen!! Soon they will required more Flutter Dev than React Dev hopefully!
@moutasim_ayoubi
@moutasim_ayoubi 3 года назад
I just joined yesterday, and I am enjoying flutter
@ikhsanfadillah9689
@ikhsanfadillah9689 2 года назад
Yes if flutter can handle web well. The purpose of React and flutter is for speed up development process for web and mobile. The performance is less important than speed up development. If you want performance go to its native language. In the end flutter is slightly better performance than react but react is better approach to the environment like website.
@maheshjamdade1
@maheshjamdade1 3 года назад
Wow that was the simplest explanation ever 🎉. need more such content 🔥
@merthyr1831
@merthyr1831 2 года назад
The term "Async simply makes a note to return to the blocking code... a *callback*.. for when the code is ready" is such an important note to make here. I think this is the first time I've TRULY understood what is meant by async/await. Before I could give you the definition but that truly made it click in my head. Amazing work Filip :)
@YoungChan_Kim
@YoungChan_Kim 3 года назад
This is something that I needed right now! Some of processes in my app takes time to finish, which makes app freeze until the end of the process. Now I know I can avoid this with isolates. Thank you for awesome information!
@kaivalpatel3990
@kaivalpatel3990 3 года назад
please make a video on using bg services on flutter, it is much needed topic
@CarloDotLog
@CarloDotLog 3 года назад
I really like this series. It is very useful, well explained. if you don't know what to study, you can find new ideas here.
@jamesperih9658
@jamesperih9658 3 года назад
A better and more relevant example of an isolate would be if you handed your phone off to a friend to check those messages for you, while you spoke to me, and your friend then just summarized what the deal on the phone was.
@DavidSmith-ef4eh
@DavidSmith-ef4eh 3 года назад
So "isolate" is the "worker" equivalent in dart?
@filiphracek
@filiphracek 3 года назад
Yes! They are very similar. Two isolated processes that can only talk to each other (not mutate each others' state).
@ekremkamaz1490
@ekremkamaz1490 3 года назад
@@filiphracekHey sir, can you make a video about SendPort - ReceivePort usage inside isolates. There is not any good tutorial about it. Thank you!
@abrorbobomurodov2361
@abrorbobomurodov2361 3 года назад
@@ekremkamaz1490 Hello, He made video that You said
@aakashr79
@aakashr79 3 года назад
Exactly what I was wondering last week. Thanks!
@sibylsystems5771
@sibylsystems5771 3 года назад
Literally was researching about this yesterday. I'm getting freaked out. Great explanation though.
@MukulKadel
@MukulKadel 3 года назад
Same for me.
@african_
@african_ 3 года назад
Thanks so much. Instead of showing us code, you have used real life examples and analogies. You'd make great teacher.
@gameplaydosabao
@gameplaydosabao 3 года назад
There is a problem with isolates. It loads all packages again, specially when started from native methods, and these packages are not completely isolate from the main thread. So, when that isolate is shutdown, some parts of main thread are also. im facing this issue to create a background fetch method, able to run dart code when arives an silent push data, of mine awesome_notifications package.
@AdrianBoyko
@AdrianBoyko 3 года назад
Interesting. I’ve been wondering how “lightweight” isolates are compared to something like Erlang actors or even Goroutines.
@nguyenkha5322
@nguyenkha5322 3 года назад
very funny explanation and easy to understand. :))) Love you Hracek.
@PaoloLammens
@PaoloLammens 2 месяца назад
The file parsing is better handled with a separate isolate, but just for fun you could probably also use async by splitting the computation into small enough chunks and throwing in an await between each chunk (for example with Future.delayed(Duration.zero)).
@NoBodyknow172
@NoBodyknow172 3 года назад
Need demo how to implementation of isolates in real life example like in e-commerce
@YuriG03042
@YuriG03042 3 года назад
you don't really need it for that. isolates are necessary when processing big chunks of data on the device itself
@jerryarekhandia1003
@jerryarekhandia1003 3 года назад
These flutter guys should not have waited this long to give use this all important information. Great video by the way
@lestradicpaul6044
@lestradicpaul6044 3 года назад
There is already a video on async and another on isolates, this one is here because some people are mixing both in their heads.
@AdrianBoyko
@AdrianBoyko 3 года назад
This information has been out there for some time and there are good blog posts on the topic. If isolates are lightweight enough, they should probably make a bigger deal about it on their website.
@gorudonu
@gorudonu 3 года назад
dart metaprogramming can improve how we operate with isolates, exciting to see it when it's ready :)
@martinv4914
@martinv4914 3 года назад
What a great explainer you are Filip!
@MeroPadai
@MeroPadai 3 года назад
World is going to require more flutter developer in future😍😍
@SEGVeenstra
@SEGVeenstra 3 года назад
Nice examples.... but I would rather see two Filips for the isolate example. One doing the conversation and the other doing the phone staring. I think that would have illustrated the difference better.
@filiphracek
@filiphracek 3 года назад
I agree. Now that people are mentioning it, it's so obvious. It just didn't occur to me back when I was recording the video.
@njeunkweborel866
@njeunkweborel866 Год назад
just great forme. i like thoses short videos on flutter and Dart Concept
@bebemenemen7363
@bebemenemen7363 3 года назад
i really do hope flutter would be in demand in the future, i'm using it on my capstone project. 😌
@RainBook-rd15
@RainBook-rd15 3 года назад
Flutter build web command is not working...how to fix this issue..
@volodymyrmedvediev2628
@volodymyrmedvediev2628 3 года назад
Best explanation ever! Thanks flutter team ❤️
@yarenpolat5026
@yarenpolat5026 3 года назад
It reminds me threads on openMP and it is awesome to do other things in the same time . I think the best think there is no need to critical section for mutual exclusions since it doesn't happen 😊
@shanglee643
@shanglee643 3 года назад
Please make a video on 'const' key word.
@dhanniekristanto
@dhanniekristanto 3 года назад
concurrent and parallel. got it 😄
@trevornatiuk1031
@trevornatiuk1031 2 года назад
Hey Filip! Thanks. I was curious why isolates don't work with UI actions? I tried to use an external library to render a PDF in an isolate, and it said "UI functions can only be run on the main thread." Why is this the case?
@shashikantdurge
@shashikantdurge 2 года назад
So the dart is multi-threaded with the use of isolates?
@PieroUlloa
@PieroUlloa 3 года назад
I think you guys should also talk about how the event loop also parallelizes IO when using async.
@allenlinli
@allenlinli 5 месяцев назад
I like the async demonstration haha
@Er_Shashank_Singh
@Er_Shashank_Singh 3 года назад
Great explanation 👍
@aytunch
@aytunch 3 года назад
Filip how can we find out if some methods we use in our app would benefit from isolates. Is there a way to profile our app and get hints to convert async's to isolates? This would make a great video or article. Please respond.
@thisguy9279
@thisguy9279 3 года назад
Haven't thought that anybody thought that Async and Isolates are related? Just came here to figure out if i missed somthing.
@yonggan1380
@yonggan1380 3 года назад
Thank you this video made it very clear 😊
@SivaKumarNitesh
@SivaKumarNitesh 3 года назад
What happens to isolates, that are spawned when the app is closed?
@nathankwabenafletcher4857
@nathankwabenafletcher4857 3 года назад
Extremely helpful!
@Raimkhodzhanov
@Raimkhodzhanov 2 года назад
Thank You!
@flutterdev
@flutterdev 2 года назад
Thanks for watching, Raim! We're happy to hear you enjoyed the video 😄 You can find more Decoding Flutter episodes here: goo.gle/DecodingFlutter Happy Fluttering!
@mjstudio6843
@mjstudio6843 Год назад
I expected you are duplicated for describing parallelism. But not happen :( Thank you for greate video 👍
@siyn007
@siyn007 3 года назад
Question: If async is not creating a new thread, does the program alternate between processing non-async code and async code then (until the async method is completed)? If yes, that just means though the program is not lagging, it will perform slower, right?
@ShivamJha00
@ShivamJha00 3 года назад
It's called the Event loop
@filiphracek
@filiphracek 3 года назад
As Shivam says: asynchronous code in Dart (and other languages) is basically an event loop, except you don't need to worry about the loop. When you get to some point where you need to wait (for human input, for example), you do `await`, which is basically like telling Dart: "continue with the event loop, and please call me again when event X is completed". You can also think of it this way: if your app is fully synchronous (no async), that's like there's only one event: program start. When that finishes, the whole program finishes as well. I'm not sure if any of this is helpful. ¯\_(ツ)_/¯
@AdrianBoyko
@AdrianBoyko 3 года назад
Many (most?) async tasks are blocked awaiting a response from the operating system. For example, waiting for a response to come back from a web server. In these cases, they aren’t actually doing anything and don’t load down the Dart thread at all.
@siyn007
@siyn007 3 года назад
@@filiphracek I think I understand how that would work for async calls that are waiting for a response. My main confusion is for async calls that are doing something like reading from a file or an image. Does an event get spun up when the async call is ready to be completed and so is processed?
@siyn007
@siyn007 3 года назад
@@AdrianBoyko my main confusion is about the case where they are doing something but I understand your point
@hasansalim1868
@hasansalim1868 3 года назад
Such videos are always helpful and appreciated
@theflutterboi
@theflutterboi 3 года назад
nice
@anton_roos
@anton_roos 3 года назад
If you have a lot of data that you need to sync to a device from an API and you have a widget showing the progress of the sync updating as the sync progress. If UI starts to jank and stutter would this be a great example to use an isolate to handle the heavy lifting of the syncing process?
@marflage
@marflage 2 года назад
I believe not. Isolates are used for large computations to complete, and only when it is complete is the result passed back to the main thread. Async, on the other hand, is the rapid movement of the main thread between the current point of execution and the point when async was encountered to check whether async method has finished doing its work. For your example, don't you think async would be appropriate to show the progress?
@Aspiiire
@Aspiiire 3 года назад
How isolates are handled on the web?
@filiphracek
@filiphracek 3 года назад
Unfortunately, they aren't supported at this point. In the old days, they were translated to WebWorkers, but that support was dropped a few years ago. On the web, you currently have to abstract from Isolates, and use WebWorkers yourself, or use a package that does that for you.
@FlutterMapp
@FlutterMapp 3 года назад
Aspiiire! Happy to see the size of your community on the Channel! Best wish for you! 🙏⚡️
@Aspiiire
@Aspiiire 3 года назад
@@filiphracek Thank you Filip for the response!
@Aspiiire
@Aspiiire 3 года назад
@@FlutterMapp Thanks Flutter Map 😀👋 Happy to see you again! Wish you to best too!!
@FlutterMapp
@FlutterMapp 3 года назад
@@Aspiiire Thanks! 🙌
@atrsarst7158
@atrsarst7158 3 года назад
nice
@AlexanderSuraphel
@AlexanderSuraphel Год назад
Async: Wait for IO. Network, File reading and writing Isolate: Wait for CPU computation, In another thread.
@adelarsq
@adelarsq 3 года назад
wait... I was waiting!
@vasanthkorada4802
@vasanthkorada4802 2 года назад
well explained!
@bmejia220
@bmejia220 3 года назад
Awesome video the phone analogy is brilliant. I am now looking for more of your great content!
@amalsunil4722
@amalsunil4722 2 года назад
So does this mean that every async process are done on a different thread but the execution of the main program (the UI rendering, handling the click events etc) all are taken by a single thread call stack. So basically the dart execution is single threaded but async processes are non blocking because that happens in a different thread and event loops takes care of the results/callbacks that we get from the future(when the thread returns the value) which again is executed in the main thread. So in a way, spawning a new isolate is like creating our own async process if I'm not wrong(i.e. a new thread is spawned and program is executed in parallel and it returns a future like the compute(), then in the main thread we can just use await to asynchronously wait and perform the needful operations). Please correct me if I'm wrong. AWAITing for you reply. Thank you.
@marflage
@marflage 2 года назад
You are right
@amalsunil4722
@amalsunil4722 2 года назад
@@marflage Thank you!
@trungcaosy6178
@trungcaosy6178 2 года назад
The host say "async will not create a new thread, it just runs on other parts". I can not understand this one
@amalsunil4722
@amalsunil4722 2 года назад
@@trungcaosy6178 Yes, async will not create new thread but provides us a way to write code in an asynchronous(non-blocking manner) when some tasks are executed in another thread. i.e. when the code or some heavy process is running in 'other parts'(a different thread) our main thread doesn't need to wait for the heavy process to finish executing, we can use async and tell the processor 'Hey please excuse this function it's asynchronous, the value once computed/proccessed will be available at some later point, so as of now let it return a future object'. Once the value is processed in another thread the event loop will take care of the results we get form this future which again is executed in the main thread.
@trungcaosy6178
@trungcaosy6178 2 года назад
thanks bro, but I think that async code will run on current thread rather than another thread because it will be handled on Event Queue as well as I/O ,gesture event. Isolate is the only thing in Flutter which can create new thread.
@wairock89
@wairock89 3 года назад
Is it similar to create a new thread to do something in .net?
@AdrianBoyko
@AdrianBoyko 3 года назад
An isolate definitely uses another thread. But in many (most?) other languages, creating another thread doesn’t result in *isolation.* In Dart, the new thread and the original thread each have their own memory - the memory for any given thread is *isolated* from the other threads. In this respect, Dart is somewhat similar to a language like Erlang/Elixir if you think of a Dart isolate as an “actor”.
@wairock89
@wairock89 3 года назад
@@AdrianBoyko Thank you for the explanation.
@rrosalesb90
@rrosalesb90 3 года назад
Great video !!!, thanks for these information.
@viplizhao
@viplizhao 7 месяцев назад
awesome, thank you.
@srikika
@srikika 3 года назад
awesome vid! more videos about Isolates implementation plz :D
@robertmrobo8954
@robertmrobo8954 4 месяца назад
I thought the video would answer my question of when to use which.
@shhhhh.
@shhhhh. 21 день назад
Thanks
@ajitkrmaurya
@ajitkrmaurya 3 года назад
Great information
@RioM8z
@RioM8z 3 года назад
Are Isolates available in flutter for web ?
@ivan.bondarchuk
@ivan.bondarchuk 10 дней назад
The dart:isolate library is currently only supported by the Dart Native platform.
@jimmyjr.canosa
@jimmyjr.canosa 2 года назад
Wow. You are best in explanation. I only get it now.
@akshaybengani
@akshaybengani 2 года назад
I have to make multiple network calls in flutter and none of them will bring some data back to me, they are just for sending some data continuously somewhere and don't require async/await, they are also not a priority task even if they fail or comes error I don't care. I need to know if I don't use async await before a network call, how does it work in the flutter event loop does it wait and reduce UI performance Should I run them in separate Isolate threads or the event loop will process these events without dropping performance,
@mahmoudselim5394
@mahmoudselim5394 2 года назад
thank you
@yeyadesire
@yeyadesire 3 года назад
You could show 2 Filips on the screen- one talking to me, and other one(clone) doing the heavy parsing, and then, when the second one finishes, tells the first Filip the result and disappears 🤣
@yeyadesire
@yeyadesire 3 года назад
Oh, didn’t read the comments, and now I see I’m not the only one thinking about clones 😂
@AdrianBoyko
@AdrianBoyko 3 года назад
I think we all agree that this video needs to be redone with multiple Filips 🙂
@filiphracek
@filiphracek 3 года назад
I can't believe it didn't occur to me when I was recording it. I totally agree. It would also be a lot funnier. Damn.
@nurola
@nurola 3 года назад
thanks
@muhammadafzal237
@muhammadafzal237 2 года назад
Please tell about onPressed vs onTap.
@algeriennesaffaires7017
@algeriennesaffaires7017 3 года назад
So isolate is like Naruto Kage Bunshin no Jutsu
@mahmoodali1871
@mahmoodali1871 2 года назад
We missssssssssssssssssssssssssssss you
@DevAloshe
@DevAloshe Год назад
thanks a lot man that was so helpful to me
@ehsanhasin8092
@ehsanhasin8092 2 года назад
great
@flutterdev
@flutterdev 2 года назад
We appreciate the positive feedback, Ehsan! You can check out even more episodes of Decoding Flutter here: goo.gle/DecodingFlutter Happy Fluttering 👍
@zayaerme
@zayaerme 3 года назад
I do not understand wording here. When I search Google, most say Dart code runs on single thread-core, maybe sometimes GC uses another core. Here it's said that if I spawn an isolate I create another thread use another processor(?). This means physical core? Can I make use of all cores of an 8 core processor with this way? I am a hobbyist so sometimes I can not get my head around these things. Can someone explain or suggest a good resource?
@teodorchirileanu
@teodorchirileanu 3 года назад
Amazing
@SS-ok8re
@SS-ok8re 3 года назад
Oh look its Caddicarus
@rhk231
@rhk231 2 года назад
Great explanation !!! Love it. ♥️
@flutterdev
@flutterdev 2 года назад
Thanks for your support, Raheel! Be sure to subscribe to stay updated on the latest with Flutter: goo.gle/FlutterYT 🙌
@chichebem
@chichebem 3 года назад
So well explained. Thanks!
@shreyankcode5902
@shreyankcode5902 8 месяцев назад
This could be the best explanation of the topic Isolates!! It was really hard to understand through Documentation! Thanks Filip!!
@andreygritsay762
@andreygritsay762 3 года назад
So why is this about parsing if the isolates in either way have to send data back and forth between themselves and it doesn't seem to be a huge advantage in, for example, parsing JSON?
@SakshamKarnawat
@SakshamKarnawat Год назад
I need that Dash plushie so bad 😫
@muhammadamineeuldji3036
@muhammadamineeuldji3036 4 месяца назад
ya sa3id yal boras
@paul_wiggin
@paul_wiggin 3 года назад
Sphere vs circle
@edricklopezcordoba4609
@edricklopezcordoba4609 3 года назад
Muy buena explicación, gracias
@MarcellodeSales
@MarcellodeSales 2 года назад
Definitely will be on the MUST READ video for my flutter team... ABSOLUTELY A MUST
@bernaferrari
@bernaferrari 3 года назад
Async works everywhere, isolates don't work in the web
@dungnguyentri2127
@dungnguyentri2127 2 года назад
hi guys. im try create my Isolate to do heavy task. I wanna when i press on Button my Isolates start. But when i do that it throw me an error. I put my Isolates on initState of StatefulWidget work well. Help me and thanks you
@craiglabenz9147
@craiglabenz9147 2 года назад
There are a lot of places to get help for this! Have you tried the Flutter Community Slack workspace or StackOverflow?
@MukulKadel
@MukulKadel 3 года назад
I was facing the same issue and here came the video. Thanks
@sasha2209
@sasha2209 3 года назад
do i need to use isolate for downloading pdf files between 1-50 megabytes ?
@craigpearson4622
@craigpearson4622 3 года назад
Hope no longer…That was helpful 👏
@maxeem3596
@maxeem3596 3 года назад
Super explanation, Filip =) Thanks.
@seangreen9590
@seangreen9590 2 года назад
Need some clarification please you said async running without blocking then at 3:38 you said thats async which is blocking can you explain please
@craiglabenz9147
@craiglabenz9147 Год назад
The difference depends on the nature of the work you're making asynchronous. The classic, most effective types of work to speed up with asynchrony are network requests or disk I/O tasks, as those effectively involve offloading the work to other parts of the computer (or other computers entirely, in the case of network requests). When you do this, your main thread "makes a mental note", as Filip described, and returns to its place when the remote work completes. Your app's performance is improved because the work intrinsically happens elsewhere, by the very nature of the work. All you have to do is make sure your main program doesn't sit and twiddle its thumbs until the remote work completes - and this is what `async-await` deliver. But what happens when the work cannot happen elsewhere? What if it has to happen on your computer, like parsing a downloaded image? In that case, using asynchrony will not help, as Dart's UI thread is still blocked up by the expensive computation. In this situation, a fresh isolate is required to recreate the scenario above of offloaded work. Once you spawn an additional isolate to parse the image, or recursively compute the 30th Fibonacci number, or whatever, you will shift your work off of the thread running your Flutter app and once again avoid dropped frames. The reason this improves your app's performance is that the new isolate physically runs on a different core in your CPU. Each core can only run one process at a time, so to truly parallelize work that is all running your machine, you must involve >1 core. In Dart, this is achieved by running some of your code on a fresh isolate. Does that help?
@seangreen9590
@seangreen9590 Год назад
@@craiglabenz9147 thank you it's really good explanation i appreciate your time
@craiglabenz9147
@craiglabenz9147 Год назад
@@seangreen9590 You bet!
@GArvinthKrishna
@GArvinthKrishna 3 года назад
Pls make a video for isolate.
@pierodivita5080
@pierodivita5080 3 года назад
Where can I buy Dash plush?
@subhranilsarkar5620
@subhranilsarkar5620 3 года назад
I think isolates are equivalent to the "threads" in Python.
@theGoldyMan
@theGoldyMan 3 года назад
I would say more like workers in js
@michaelkadziela7460
@michaelkadziela7460 3 года назад
Isolates are equivalent to Multiprocessing in Python as they're on a separate core and running parallel while threading in Python only runs concurrently as it uses the same threads on the same core, thus can't run two threads at the same time.
@subhranilsarkar5620
@subhranilsarkar5620 3 года назад
@@michaelkadziela7460 Oh! Thanks man!
@osagiepromise5026
@osagiepromise5026 3 года назад
Best explanation so far. Thanks
@kalaikkathiravanselvaraj1692
@kalaikkathiravanselvaraj1692 3 года назад
i need a tutorial video for how to create your animations
@sharbelokzan9673
@sharbelokzan9673 3 года назад
Great explanation 🙏🙏
@imyogisingh
@imyogisingh 3 года назад
Great !
@shivaprasadnaik5450
@shivaprasadnaik5450 3 года назад
Best explanation ever given 👏
@albanr8028
@albanr8028 3 года назад
Great !
@Clavvik15
@Clavvik15 3 года назад
Great explanation! It’s short and clear. On the other hand I can’t wait to watch a similar video on the actual approach how to work with isolates in flutter 😄
@craiglabenz9147
@craiglabenz9147 Год назад
This might help: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-vl_AaCgudcY.html
@prashantmaharana3467
@prashantmaharana3467 3 года назад
Noice 🔥
@ywwqyh
@ywwqyh 2 года назад
thanks,i know compute method know!
Далее
BuildContext?! | Decoding Flutter
2:40
Просмотров 147 тыс.
OYUNCAK DİREKSİYON İLE ARABAYI SÜRDÜ 😱
00:16
Просмотров 4,8 млн
ЭТО НАСТОЯЩАЯ МАГИЯ😬😬😬
00:19
Learn to use Isolates in Flutter | Simplified
10:28
Просмотров 29 тыс.
Adaptive vs. Responsive | Decoding Flutter
5:09
Просмотров 107 тыс.
Widgets vs helper methods | Decoding Flutter
6:33
Просмотров 168 тыс.
Unbounded height / width | Decoding Flutter
4:54
Просмотров 140 тыс.
Null safety in Dart - Introduction
5:27
Просмотров 164 тыс.
C++ vs Rust: which is faster?
21:15
Просмотров 396 тыс.
OYUNCAK DİREKSİYON İLE ARABAYI SÜRDÜ 😱
00:16
Просмотров 4,8 млн