Pozwól nam zbadać niektóre funkcje podane w tym artykule.
Golang Mutex
Synchronizacja.Mutex zapewnia prymityw Mutex, który pozwala na wzajemne wykluczenia wspólnych zasobów zapobiegających warunkom wyścigu.
Przykładowe użycie:
Pakiet MainOdczyt/zapisz mutex
Synchronizacja.RWMUTEX zapewnia czytelnik/pisarz Mutex. Oferuje podobne metody jak prymitywny mutx, ale może umożliwić współbieżne odczyty za pomocą metod RLOCK i Runlock:
var i = 10Poprzedni przykład może pozwolić ponad jedną goroutiną na odczytanie kodu. W przeciwieństwie do synchronizacji.Mutex, który pozwala dokładnie jeden czytelnik i jeden pisarz na raz.
Grupy oczekujące
Synchronizacja.Waitgroup służy do oferowania mechanizmu blokującego dla Goroutinów. Korzystając z grupy oczekujących, możesz zablokować wykonywanie funkcji, dopóki wszystkie Goroutines nie zakończą wykonywania.
Działa poprzez utworzenie licznika, który zawiera liczbę goroutinów do poczekać. Po zakończeniu goroutiny licznik zmniejsza się o 1. Gdy licznik wyniesie 0, grupa oczekujących odblokowuje wykonanie.
Aby dodać wartość do licznika Waitgroup, możemy użyć metody add (), która ma wartość liczb całkowitą.
Aby usunąć goroutinę z licznika po zakończeniu, używamy metody gotów (). Na przykład:
Pakiet MainW poprzednim przykładzie zwiększamy wartość licznika grupy oczekujących o 1 poprzez użycie funkcji add ().
Po zakończeniu goroutiny zmniejszamy licznik o 1 za pomocą metody gotów (). Poprzedni kod powinien zwrócić dane wyjściowe jako:
Pracownik: 4 bieganieRaz
Synchronizacja.Kiedyś prymitywne zapewnia, że funkcja działa tylko raz. Przykładem jest to, jak pokazano poniżej:
var po synchronizacji.RazWniosek
Ten przewodnik obejmuje podstawowe i podstawowe prymitywy dostarczone przez pakiet Go Sync. Ponadto omówiono prymitywy synchronizacyjne, takie jak Mutex, Waitgroup, Pule, Read and Write Mutex oraz zmienne stanowe. Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź inne artykuły w Linux, aby uzyskać więcej wskazówek i samouczków.