Junior — Middle
Фарқи байни бастани оддӣ ва бастани рекурсив дар ҳамоҳангсозии ҷараёнҳо чист?
sobes.tech AI
Ҷавоб аз AI
Обикновен блок (mutex) позволява на нишка да завземе ресурс, и ако същата нишка се опита да го завземе отново, тя ще бъде блокирана, което води до взаимна блокировка (deadlock).
Рекурсивният блок (recursive mutex) се различава по това, че същата нишка може да го завземе няколко пъти подред без да бъде блокирана. Въпреки това, блокът трябва да бъде освободен толкова пъти, колкото е бил завзет, за да могат други нишки да получат достъп.
Пример:
-
Обикновен блок:
- Нишка A завзема блока.
- Нишка A се опитва да го завземе отново — блокира се завинаги.
-
Рекурсивен блок:
- Нишка A завзема блока.
- Нишка A го завзема отново — успешно.
- Нишка A освобождава блока два пъти, след което той става достъпен за други нишки.