Junior — Middle
Je možné použiť objekty synchronizácie ako argumenty pri volaní funkcií?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa objekty synchronizácie, ako napríklad sync.Mutex alebo sync.WaitGroup, zvyčajne prechádzajú pomocou ukazovateľa, aby sa zabránilo kopírovaniu vnútorného stavu a zabezpečila správna funkcia.
Takéto objekty je možné odovzdať ako argumenty funkcie, ale je dôležité:
- Odovzdať ukazovateľ na synchronizačný objekt, nie kópiu.
- Nekopírovať synchronizačné objekty, pretože to môže viesť k nepredvídateľnému správaniu.
Príklad odovzdania *sync.Mutex do funkcie:
func criticalSection(mu *sync.Mutex) {
mu.Lock()
defer mu.Unlock()
// kritická sekcia
}
func main() {
var mu sync.Mutex
criticalSection(&mu)
}
Takto je možné použiť synchronizačné objekty ako argumenty, ale je potrebné ich odovzdať pomocou ukazovateľa.