What is a mutex in C? (pthread_mutex)

  Рет қаралды 163,785

CodeVault

CodeVault

Күн бұрын

Source code can be found here:
code-vault.net...
===== Support us through our store =====
code-vault.net...
===== Check out our website =====
code-vault.net
===== Check out our Discord server =====
discord.code-v...

Пікірлер: 206
@sergiomontes8606
@sergiomontes8606 3 жыл бұрын
This man deserves so many more views and subscribers. So well explained. My professors need to learn from him on how to teach.
@Alexander_444.20
@Alexander_444.20 3 жыл бұрын
yup
@habilel5056
@habilel5056 2 жыл бұрын
i reply for the referencement
@sammyxf6992
@sammyxf6992 Жыл бұрын
Exactly
@잠만보-k7s
@잠만보-k7s 2 жыл бұрын
This man is practically the best teacher I've ever had. Thank you SOOO MUCH.
@akapotatis9445
@akapotatis9445 3 жыл бұрын
This is something random but it's so attractive seeing someone being so smart
@CodeVault
@CodeVault 3 жыл бұрын
Thanks haha
@shanthgaitonde
@shanthgaitonde 2 жыл бұрын
The operations performed by a thread after acquiring a lock are called "critical section". This helps in achieving thread synchronisation. Thanks for the video!
@zakwanashfaq9879
@zakwanashfaq9879 3 жыл бұрын
you should train professors on how to teach Thanks for explaining, it was very easy to understand.
@sagejpc1175
@sagejpc1175 10 ай бұрын
I want you to know you have taught me more about the C language in 10 minutes than an entire university lecture did in 80 minutes. I need to learn this for a project and you have made my life so much easier. Thank you so much.
@wtfitsdrewbritton
@wtfitsdrewbritton 2 жыл бұрын
Can’t thank you enough for your detailed and succinct explanations! When I began diving in to multithreaded programming with C++17 I became overwhelmed pretty quickly
@bh3302
@bh3302 11 ай бұрын
Man, you are an absolute legend! Thank you so much for uploading this.
@imqwerty5171
@imqwerty5171 3 жыл бұрын
Thanks for making these amazing tutorials. You earned a sub
@thegameisneverover7558
@thegameisneverover7558 2 жыл бұрын
BRO your tutorials bring me through my whole semester
@cicerotcv
@cicerotcv 3 жыл бұрын
I bet you are not even close to understand how good you've done for humanity since you started this channel. Thank you very much.
@PHTM04
@PHTM04 9 ай бұрын
Subscribed to your channel man. Its crazy how you break down everything into making them seem so easy! Much appreciated dude and I really hope more see your channel, much love!
@havoc1417
@havoc1417 2 жыл бұрын
Man, you really make C look very simple and lovable.
@ryanc674
@ryanc674 Жыл бұрын
dude you’re the best. Thank you so much for making these videos
@timse699
@timse699 2 жыл бұрын
This man is practically the best teacher! Sub!
@0xfsaymyname
@0xfsaymyname 4 ай бұрын
Man you are a God, thanks to sharing this with us!
@ditobrando4407
@ditobrando4407 9 ай бұрын
I wish you were one of my professors. Every time I watch a video from you I get excited to code again.
@sharifsircar
@sharifsircar 2 жыл бұрын
I'd be screwed if it wasn't for many of your c videos
@giladefrati8414
@giladefrati8414 7 ай бұрын
Thank you very much! You explained it so well and clearly; when my university lecturer explained it to me, I did not understand anything. I really like your channel.
@arushi7899
@arushi7899 3 жыл бұрын
You're an AMAZING teacher, Sir. Thanks for this. Subscribed!
@harshmishra9941
@harshmishra9941 Жыл бұрын
I purely watched this playlist to understand what the heck my OS prof was teaching when she taught us semaphores (although for processes) and I couldn't understand at that time. Loved it !
@FrodosBeutel
@FrodosBeutel 2 жыл бұрын
You saved alot of work and misunderstanding with the threads videos. Thanks alot
@ndf782
@ndf782 6 ай бұрын
Your classes are amazing! All of them! Just one thing, I think that when you say race condition, the correct term is data race. Cheers!
@ManaswiRaj-p8u
@ManaswiRaj-p8u 6 ай бұрын
Race conditions can also occur on single core processors like if we consider concurrent CPU and the operations are read, increment and write. So lets say P1 starts first then P1 reads increments and then it is preempted by another process P2, then P2 does read, increment and then it is preempted by P1. Now P1 writes the value and exits after which P2 comes and writes its value thus there is a race condition
@CodeVault
@CodeVault 5 ай бұрын
You're right, I didn't want to go into much detail regarding this and gave a simple (albeit wrong) explanation
@relicdelic833
@relicdelic833 3 жыл бұрын
Hello. This is one of the greatest tutorials I've seen. I will be watching the whole playlist, thank you for your hard work and skill in education.
@spexon7311
@spexon7311 3 жыл бұрын
You can tell how helpful his videos are because I have not seen 1 dislike yet. You make this so understandable
@triplestrikee875
@triplestrikee875 2 жыл бұрын
The lock variable + if block example is the best example I have even seen for this Mutex topic
@Dogdrulezz
@Dogdrulezz Жыл бұрын
This man is amazing! I wish he had merch, I would love to rock a code vault T-Shirt or Hoody
@CodeVault
@CodeVault Жыл бұрын
Haha, thanks. I will think about launching some merch if enough people want them
@Achao3_AkaoShiro_
@Achao3_AkaoShiro_ 3 жыл бұрын
Great video, explained how lock and unlock work really well. I was having trouble understanding what it was with my professors explanation lol. Thanks for explaining it, you definitely deserve more views and subs!
@Codality
@Codality 2 жыл бұрын
thank you really , you are better than almost all the teachers in this world... all the respect
@AdiSings2023
@AdiSings2023 Жыл бұрын
Best course on Multithreading!!
@morefun790
@morefun790 10 ай бұрын
You make complex things more easier, great job !! thank you.
@Nat-qm5vb
@Nat-qm5vb 10 ай бұрын
Once again, KZbin saves my homework. Thank you!
@patrykjaworski402
@patrykjaworski402 3 жыл бұрын
I love your videos. Your materials are helping me a lot more than my lecturers do and also you making it simple and more understable. Looking forward to POSIX/ SYS V semaphores. Also I would like to ask will there be coming more materials about pthreads ? ( maybe private data of threads). Best of regards code vault. Keep it up!
@CodeVault
@CodeVault 3 жыл бұрын
Thank you! And yes, the last lessons in the course are not yet decided so will add most of the suggestion from the community there (like this one ;) ).
@iloveukraine-subscribe1kgo822
@iloveukraine-subscribe1kgo822 3 жыл бұрын
Thank you for the practical Mutual Exclusion video.
@msimamsima9059
@msimamsima9059 2 жыл бұрын
Mutual Exception.
@satvikkhare1844
@satvikkhare1844 2 жыл бұрын
Thank you sir, these tutorials have made my synchronisation concepts very clear.
@sanguinho
@sanguinho Жыл бұрын
What a clear and simple explanation. Thanks my dude
@dudidaabul1782
@dudidaabul1782 2 жыл бұрын
Great job. Explanations are easy and clear, very useful information. Thanks a lot!!!
@AshishSinghh
@AshishSinghh 2 жыл бұрын
You are a gem 🙏🏻
@barankaplan4308
@barankaplan4308 3 жыл бұрын
PERFECT! looking forward to see a video about spinlock!
@izharhussain7241
@izharhussain7241 3 жыл бұрын
you are a gem! Thank you for the videos.
@dobariyavraj3659
@dobariyavraj3659 11 ай бұрын
God send savior, HE's the ONE
@ayoubrayanemesbah8845
@ayoubrayanemesbah8845 Жыл бұрын
just a note mutuale exclusion problem can heppen even for single core processors , because when the quantum ends of a processoes , another process can modifie the variable
@bacnguyenkhac154
@bacnguyenkhac154 2 жыл бұрын
many thanks for this series, sir! you'v saved me !!!!
@javiercardoso5669
@javiercardoso5669 Жыл бұрын
Thank you so much for the video!
@ruxandrawoinaroski5690
@ruxandrawoinaroski5690 2 ай бұрын
Foarte bine explicat, mersi :)
@ivanleon6164
@ivanleon6164 Жыл бұрын
race cond can also happen in single core if interrupts are enabledand a variable is modified.
@yernarduisebai5609
@yernarduisebai5609 2 жыл бұрын
You explain way more clear than my professor Park
@galkk3
@galkk3 3 жыл бұрын
I really enjoy your videos, thank you Could you make a video about Condition Variables with threads?
@CodeVault
@CodeVault 3 жыл бұрын
Will do
@tiemen88
@tiemen88 2 жыл бұрын
Thank you so much for the explanation on Pthread mutex!
@alihantasyurek4338
@alihantasyurek4338 9 ай бұрын
Ty for the awesome videos!
@alireza98325
@alireza98325 2 жыл бұрын
Great tutorial. I have one comment about the likelihood of race condition happening for single-core processors. Even with a single core and a single processor but multiple threads (as it is the case for the FreeRTOS OS in embedded systems), race conditions will happen more often than not without a mutex, atomic instructions, etc.
@CodeVault
@CodeVault 2 жыл бұрын
Thanks! Interesting. I wonder now about single-core single-thread environments. Technically there still should be some race conditions but they might be encountered less often. Would you like to test that?
@alireza98325
@alireza98325 2 жыл бұрын
@@CodeVault I think the only possibility for race conditions to happen for single-core single-threaded app, is when a hardware interrupt occurs and ISR gets executed. If hardware interrupts were not present, I'm not sure race conditions can ever occur for a single-core, single-threaded app
@abugslife2461
@abugslife2461 2 жыл бұрын
This is beyond helpful! Thank you so much :)
@giuliamarceladesenafaria3170
@giuliamarceladesenafaria3170 11 ай бұрын
thank you for this playlist
@cindaellas
@cindaellas 2 ай бұрын
great video! thanks!!!! very good job! greetings from germany
@log_of_1
@log_of_1 2 жыл бұрын
Really a wonderful explanation. Thank you!
@LinusKarlssonMusic
@LinusKarlssonMusic Жыл бұрын
Thanks for the great explanation!
@Dave-cq6pu
@Dave-cq6pu 3 жыл бұрын
Really useful videos, just as im learning this at school :D
@jong.4864
@jong.4864 2 жыл бұрын
Thank you, you're so helpful!
@pagetwnas1
@pagetwnas1 3 жыл бұрын
Thank you sir , I appreciate your help !
@armandomiguelzegarracastil2134
@armandomiguelzegarracastil2134 3 жыл бұрын
AMAZING TEACHER!!!!!!!!!!!!!!!!!! THANK YOU!!!
@dorianalary7849
@dorianalary7849 2 жыл бұрын
Its incredible, I'm French but I understood perfectly this video, thanks you
@tahmeerimtiaz3123
@tahmeerimtiaz3123 3 жыл бұрын
Thanks you so much you teaching method are soooo good.
@msimamsima9059
@msimamsima9059 2 жыл бұрын
Very useful video! Thank you!
@peerapatratanachartchuchai5844
@peerapatratanachartchuchai5844 2 жыл бұрын
Thank you for your great video bro. You save my life !!! Just curious a little bit from the last video. Base on my understanding, Race condition happen when 2 thread read memory at the same time. Is that possible if mutex lock data in exactly same time and race condition happen. If not why?
@CodeVault
@CodeVault 2 жыл бұрын
First things first: a race condition happens only in two cases: 1) You have one thread writing a piece of data while other threads are reading it 2) You have multiple threads writing the same piece of data Two threads reading the same piece of data won't cause a race condition. Although with mutexes a read and write could happen at the same time, they are designed so that each read and write on them is atomic, meaning there's no way other threads could read the data while another is in the process of writing it (only before it wrote to it or after that)
@Brad_Script
@Brad_Script 3 ай бұрын
Apparently there's another way of initializing a pthread_mutex: pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; I wonder what the difference is
@CodeVault
@CodeVault 9 күн бұрын
They are basically the same. The first one could technically be faster since it only assigns some values but can only be used. Also, it guarantees that the lock is always initialized
3 жыл бұрын
Could you make a video about semaphores and pointing the differences between it and mutexes' use cases?
@CodeVault
@CodeVault 3 жыл бұрын
Yep, semaphores and barriers are also planned for this course
@soumavadas1400
@soumavadas1400 Жыл бұрын
Love your Videos
@matthewjiang9450
@matthewjiang9450 3 жыл бұрын
Fantastic explanation!!! Thanks
@viniciuss.9250
@viniciuss.9250 2 жыл бұрын
Thank you SOOO MUCH.
@johnthompson4011
@johnthompson4011 Жыл бұрын
Bro small problem with your code.I took this as a refresher to threads.Locking and unlocking the mutex in each iteration of the loop introduces unnecessary overhead and reduces the potential benefits of multithreading. A better way is to lock and unlock it outside the loop.Anyway thanks for the video bro
@CodeVault
@CodeVault Жыл бұрын
Of course. But this was a short explanation and I wanted to show that the mutexes work even if multiple loops are executing at the same time. In a production environment, this would be very inefficient indeed
@fernandaeschallots2485
@fernandaeschallots2485 3 жыл бұрын
Your video is the best. thx
@Jonathan-ru9zl
@Jonathan-ru9zl 9 ай бұрын
amazing explanation.
@habilel5056
@habilel5056 2 жыл бұрын
i comment for the referencement, you're a good guy
@oguzhanasilturk5110
@oguzhanasilturk5110 Жыл бұрын
man, i wanna be your thread. such a good explanation
@misterSaragi
@misterSaragi 3 жыл бұрын
Your a gem!
@anthonymarcovecchio5201
@anthonymarcovecchio5201 Жыл бұрын
Good stuff my friend
@austinoquinn815
@austinoquinn815 11 ай бұрын
Maybe a minor misstatement when you say race conditions only happen on multicore systems. I think race conditions can also happen on one core processors. You could save your mails in thread 1 context switch to thread 2 and finish loop then go back to 1 and finish, then your result would only be 1,000,000 on write back. Great content though. Love this playlist.
@CodeVault
@CodeVault 11 ай бұрын
Yes, it's definitely wrong. Race conditions can happen on any system. It's just much much rare to happen on single-core processors as the context switch would have to happen right between an assignment (which, from what I recall, is a very low chance). Maybe I will make a video on this topic to investigate what is the chance of that happening and whatnot
@austinoquinn815
@austinoquinn815 11 ай бұрын
@@CodeVault that would be awesome 👍🏻
@AsliArtistVlogs
@AsliArtistVlogs 2 жыл бұрын
Race codnitions can very well occur in single core processors too. Think of pre-emption.
@timonburkard3481
@timonburkard3481 2 жыл бұрын
Exactly.
@Alexander_444.20
@Alexander_444.20 3 жыл бұрын
great explanation thank you!
@wisiw
@wisiw Жыл бұрын
Can we say that mutex locking forces the multithreading routine into serial?
@CodeVault
@CodeVault Жыл бұрын
Yes. Basically the critical section that is surrounded by a mutex lock/unlock will always be serially executed
@neeluiiitd
@neeluiiitd 10 ай бұрын
Thank you.
@solomonpierce2676
@solomonpierce2676 Жыл бұрын
good explanation!
@Smile-si8xv
@Smile-si8xv 5 ай бұрын
arrayyy u r great ji😍
@sakkamouid3343
@sakkamouid3343 Жыл бұрын
I think using lock the execution of the program would be slower, but that is not important . More important is avoiding race condition
@wisiw
@wisiw Жыл бұрын
Yes but doesn't that mean we're forcing multithreading program into serial program?
@dattakunal
@dattakunal Жыл бұрын
Thanks for the wonderful video. I have a question. What happens if thread 1 throws an error before the unlock? Will thread 2 wait forever?
@CodeVault
@CodeVault Жыл бұрын
The lock is released, so thread 2 won't wait forever
@chaimaeelhaimer870
@chaimaeelhaimer870 3 жыл бұрын
Bravo ! thanks for explaining my question is : when we may need to create 2 threads with same function?
@CodeVault
@CodeVault 3 жыл бұрын
Whenever you want to split CPU intensive work between the threads, that's when the workload is exactly the same except for some indices.
@basic-1337
@basic-1337 7 ай бұрын
Greate video that makes me want to migrate from windows to linux😂
@CodeVault
@CodeVault 5 ай бұрын
For development it's definitely a must. Either to Linux or Mac... Windows is not great for development
@kamurashev
@kamurashev Жыл бұрын
I believe it’d be fair to at least mention that there are other options to approach this. Eg in this example atomic would work better.
@CodeVault
@CodeVault Жыл бұрын
You mean atomic operations?
@kamurashev
@kamurashev Жыл бұрын
@@CodeVault yep, like using atomic_int eg
@narasarajv5278
@narasarajv5278 3 жыл бұрын
Real time example super explanation.
@travellerswanted6906
@travellerswanted6906 3 жыл бұрын
Thanks, for the amazing tutorial. Keep posting the content :) Could you please post one video to print odd-even numbers in a sequence, so it will be more clear regarding the mutex and condition variables?
@Hammy_Pig
@Hammy_Pig 3 жыл бұрын
you are a god
@oshadhaedirisinghe1455
@oshadhaedirisinghe1455 6 ай бұрын
Thank you
@spellignerror8998
@spellignerror8998 9 ай бұрын
2:09 what if the threads met a race condition at reading lock?
@CodeVault
@CodeVault 8 ай бұрын
locks are thread-safe at the OS level
@mikicerise6250
@mikicerise6250 3 жыл бұрын
Thank you! :)
@DineshKumar-wo4tj
@DineshKumar-wo4tj 2 жыл бұрын
Even if I comment mutex_init and mutex_destroy, i can able to see mutex lock/unlock is working. Then what is the use of init/destroy function???
@CodeVault
@CodeVault 2 жыл бұрын
Well, init is surely needed when using a mutex. Although, probably, since the mutex is global in this video it gets its members automatically initialized to 0 and I think that coincides with what pthread_mutex_init sets the values to. If you try to use the a local mutex I think you'd have issues without the init function call. The pthread_mutex_destroy is not 100% necessary on some architectures but it's good practice
@DineshKumar-wo4tj
@DineshKumar-wo4tj 2 жыл бұрын
@@CodeVault Thank you for your clarity.
@reshmasri9377
@reshmasri9377 10 ай бұрын
i have encounter an error regarding pthread_mutex_destroy(&mutex, NULL); but they are not receiving the int type for this function it just takes the refernce that's it. Hope u understand what i am trying to convey.
@CodeVault
@CodeVault 8 ай бұрын
The pthread_mutex_destroy only has one parameter, the mutex you are trying to destroy
@IDsirbu
@IDsirbu 3 жыл бұрын
Great work
@chrism6880
@chrism6880 2 жыл бұрын
This is an example of how and why to use a mutex, but doesn't make an effort to explain what a mutex is
@CodeVault
@CodeVault 2 жыл бұрын
I rewatched the video and I think an explanation of what a mutex is is at the beginning of the video with that "lock" variable example. Maybe I should've went into more detail, but, at the end of the day, for a beginner, I think this explanation is good enough. I might look into an in-depth explanation of the inner workings of the mutex at a future date
@selvamthiagarajan8152
@selvamthiagarajan8152 7 ай бұрын
say in the routine() function I had 3 different operations, op1, op2, op3. I place a mutex_lock before op1, mutex_unlock after op1. Assume 3 threads. Will the other threads execute op2, and op3 when op1 is under lock ?
@CodeVault
@CodeVault 5 ай бұрын
No, they won't. All threads will wait at the mutex_lock instruction until the lock is unlocked. Though, this still allows for race conditions on op2 and op3
How to create threads in a loop (pthread_create)
8:50
CodeVault
Рет қаралды 86 М.
What are Race Conditions?
13:09
CodeVault
Рет қаралды 92 М.
Поветкин заставил себя уважать!
01:00
МИНУС БАЛЛ
Рет қаралды 6 МЛН
Spongebob ate Patrick 😱 #meme #spongebob #gmod
00:15
Mr. LoLo
Рет қаралды 13 МЛН
when you have plan B 😂
00:11
Andrey Grechka
Рет қаралды 65 МЛН
Amazing Parenting Hacks! 👶✨ #ParentingTips #LifeHacks
00:18
Snack Chat
Рет қаралды 21 МЛН
Difference between trylock and lock in C
6:04
CodeVault
Рет қаралды 26 М.
What is a semaphore? How do they work? (Example in C)
13:27
Jacob Sorber
Рет қаралды 297 М.
Producer - Consumer Problem in Multi-Threading
25:18
CodeVault
Рет қаралды 112 М.
Condition variables in C
18:57
CodeVault
Рет қаралды 94 М.
What is the difference between Task and Thread in C#?
9:24
C# interview questions
Рет қаралды 17 М.
Compilers, How They Work, And Writing Them From Scratch
23:53
Adam McDaniel
Рет қаралды 184 М.
Semaphore Vs. Mutex - A Clear Understanding
10:14
Shriram Vasudevan
Рет қаралды 100 М.
Get return value from a thread (pthread_join)
9:10
CodeVault
Рет қаралды 74 М.
Поветкин заставил себя уважать!
01:00
МИНУС БАЛЛ
Рет қаралды 6 МЛН