Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot, kas ir nosacījuma mainīgais sync.Cond Go valodā un kam tas tiek izmantots?

sobes.tech AI

Atbilde no AI

Go valodā sync.Cond ir struktūra, kas īsteno nosacījuma mainīgo un tiek izmantota gorutīnu sinhronizācijai. Tā ļauj vienai vai vairākām gorutīnām gaidīt, kamēr tiek izpildīts noteikts nosacījums, un informēt citus gorutīnus, ka šis nosacījums ir mainījies.

Galvenās sync.Cond metodes:

  • Wait() — bloķē pašreizējo gorutīnu, līdz cita gorutīna izsauks Signal() vai Broadcast().
  • Signal() — pamodina vienu gorutīnu, kas gaida nosacījuma mainīgajā.
  • Broadcast() — pamodina visas gorutīnas, kas gaida nosacījuma mainīgajā.

Piemērs lietošanai:

var mu sync.Mutex
cond := sync.NewCond(&mu)

// Gorutīna, kas gaida signālu
go func() {
    mu.Lock()
    cond.Wait() // gaida signālu
    // pēc pamodināšanas veic darbības
    mu.Unlock()
}()

// Gorutīna, kas sūta signālu
mu.Lock()
cond.Signal() // pamodina vienu gorutīnu
mu.Unlock()

Tādējādi sync.Cond palīdz koordinēt vairākas gorutīnas, kas gaida, lai tiktu izpildīti noteikti nosacījumi.