Starsze wersje standardu POSIX gwarantują, że pierwsza metoda z inicjatorem będzie działać tylko ze zmiennymi przydzielonymi statycznie, a nie wtedy, gdy zmienna jest auto
zmienną zdefiniowaną w treści funkcji. Chociaż nigdy nie widziałem platformy, na której byłoby to niedozwolone, nawet w przypadku auto
zmiennych, a to ograniczenie zostało usunięte w najnowszej wersji standardu POSIX.
Ten static
wariant jest naprawdę preferowany, jeśli możesz, ponieważ pozwala na znacznie łatwiejsze pisanie kodu bootstrap. Za każdym razem, gdy w czasie wykonywania wprowadzasz kod, który używa takiego muteksu, możesz mieć pewność, że mutex został zainicjowany. To cenna informacja w kontekście wielowątkowości.
Metoda wykorzystująca funkcję init jest preferowana, gdy potrzebujesz specjalnych właściwości dla swojego muteksu, takich jak rekurencyjność, np. Możliwość współdzielenia między procesami, a nie tylko między wątkami.