Sobes.tech
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.