Sobes.tech
Senior

Чӣ гуна иҷрои ду worker()-ро ба ҷои пайдарпайӣ ба таври параллелӣ кардан мумкин аст (6 сония → 3 сония)?

sobes.tech AI

Ҷавоб аз AI

Горутинларни ишлатиб, Go тилида функцияларни параллел бажариш мумкин. Агар сизда икки worker() функцияси бўлса, улар ҳозирда навбатма-навбат ишлаётган бўлса ва умумий вақт 6 сонияни ташкил қилса, уларни алоҳида горутинларда ишга туширсангиз, улар параллел ишлайди ва умумий вақт тахминан 3 сонияга қисқаради.

Масалан:

func() {
    worker()
}()
func() {
    worker()
}()

// Икки горутиннинг тугашини кутмоқ учун, sync.WaitGroup-дан фойдаланинг
var wg sync.WaitGroup
wg.Add(2)
func() {
    defer wg.Done()
    worker()
}()
func() {
    defer wg.Done()
    worker()
}()
wg.Wait()

Шу тарзда, функцияларни горутинларда ишга тушириш ва WaitGroup орқали синхронлаштириш уларнинг параллел бажарилишини таъминлайди.